簡體   English   中英

不知道出什么問題了,嘗試生成5x5網格python 1-25

[英]Not sure of what is wrong, trying to produce a 5x5 grid python 1-25

我不確定自己在做什么錯,如果有人可以准確看到,請通知我。

嘗試過:

grid = [[n in range(1,6)*5]]

grid [[]*5 for n in range(1,25)]

我的代碼:

grid = [[x for x in range(1,25)] for y in range(5)]

輸出:

[[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24]]

期望的:

[[1,2,3,4,5], [6,7,8,9,10], [11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25]]

顯然,內部列表中的值必須與每個列表中的內部計數器(x)和外部列表中的列表位置 (y)相關。 您的代碼無法處理第二個要求。

grid = [[1+x+5*y for x in range(5)] for y in range(5)]

您在內部循環中要在1到24(含)范圍內進行迭代,這就是為什么列表過長,並且列表中的值相同的原因。

您需要以某種方式使外部循環的變量指示內部循環,以便內部循環中的每個范圍都從不同的點開始。 同樣,校准內部范圍的長度也是必不可少的。

話雖如此,我建議以下內容來獲得所需的輸出。

grid = [list(range(i, i+5)) for i in range(1, 26, 5)]

您可以將列表切成5個子列表,請參見以下代碼

data=range(1,26)
len_sublist = 5
print [data[x:x+len_sublist] for x in xrange(0, len(data), len_sublist)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM