我在學習列表推導,並且通過切換變量得到2個不同的結果,儘管它們看起來應該是一樣的。當在列表理解中對語句重新排序時NameError
陣列a
等於[[0, 0, 0, 0, 0], [1, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
列表綜合1部作品:
[(i,j) for j in range(len(a[i])) for i in range(len(a))]
返回:
[(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (0, 2), (1, 2), (2, 2), (3, 2), (4, 2), (0, 3), (1, 3), (2, 3), (3, 3), (4, 3), (0, 4), (1, 4), (2, 4), (3, 4), (4, 4)]
正如所預期的。
但翻轉變量...
[(j,i) for i in range(len(a[j])) for j in range(len(a))]
導致NameError:沒有定義
名「J」可有人請向我解釋爲什麼它的事項i或j是否是第一位的?
你應該提到你的第一個例子,嵌套列表comp,創建了元組列表的列表。或者只是將它的輸出包含在你的答案中。 –
好的是有道理的,所以在第一個例子中,括號後面的for循環是第一個運行的嗎?例如,如果'ninecells = [[a [0] [0] + w,a [0] [1] + h]在範圍(-1,2)中對於範圍(-1,2)中的w, '那麼'範圍內的h'將首先運行? – st4rgut
@ PM2Ring好點,補充說。 – Meerness