我在学习列表推导,并且通过切换变量得到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