为什么以下列表理解表达式不起作用?
[col1*col2 for (col1, col2) in zip(row1, row2) for (row1, row2) in zip(M,N)]
Python说:
NameError: name 'row1' is not defined
使用:
M = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
N = [[2, 2, 2], [3, 3, 3], [4, 4, 4]]
答案 0 :(得分:1)
确实,row1
未定义,row2
也是如此。
让我们简化您实际尝试做的事情:
for row1, row2 in zip(M, N):
for col1, col2 in zip(row1, row2):
result = col1*col2
print result
上述代码运行正常,因为我们首先从row1
选择了row2
和zip(M, N)
。然后我们从col1
中选择了col2
和zip(row1, row2)
。
因此,如果您想在一行中压缩代码,将必须采用与上述相同的方法。所以你的代码看起来如下所示:
[col1*col2 for (row1, row2) in zip(M, N) for (col1, col2) in zip(row1, row2)]