为什么这个说法行不通?

2024-04-19 21:46:05 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么下面的列表理解表达式不起作用?你知道吗

[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]]

Tags: namein列表foris表达式notzip
1条回答
网友
1楼 · 发布于 2024-04-19 21:46:05

实际上,row1没有定义,row2也没有定义。你知道吗

让我们来简化一下您实际要做的事情:

for row1, row2 in zip(M, N):
    for col1, col2 in zip(row1, row2):
        result = col1*col2
        print result

上面的代码运行良好,因为我们首先从zip(M, N)中选择了row1row2。然后我们从zip(row1, row2)中选择col1col2。你知道吗

因此,如果要将代码压缩到一行中,则必须遵循与上面相同的方法。因此,您的代码如下所示:

[col1*col2 for (row1, row2) in zip(M, N) for (col1, col2) in zip(row1, row2)]

相关问题 更多 >