2
M = [[1,2,3],
     [4,5,6],
     [7,8,9]]

col2 = [row[1] + 1 for row in M if row[1] % 2 == 0]
print (col2)

输出:[3, 9]

我期待它过滤掉奇数,但它恰恰相反。

4

4 回答 4

6

代码完全符合您的预期 - 如果第二项是偶数,则将其加一并将其放入列表中。

因此,对于第一行,它看到 2 % 2 == 0 为 True,并设置 col2[0] = 2 + 1 = 3。对于第二行,5 % 2 == 0 为 False。对于第三行,8%2 == 0 为 True,col2[1] = 8 + 1 = 9。

于 2009-11-12T04:46:45.473 回答
2

我相信您需要将比较切换为== 1from == 0

任何数除以 2 的模数为 0 或 1,奇数时为 1。

于 2009-11-12T04:50:48.307 回答
0

您正在测试row[1]%2,但打印row[1]+1
,所以当 时row[1]==2,它是偶数,但您附加3到结果
row[1]==5,它是奇数,所以您过滤掉它
,当row[1]==8它是偶数,但您附加9到结果

于 2009-11-12T04:50:27.293 回答
0
M = [[1,2,3],
    [4,5,6],
    [7,8,9]]
col2 = []

for row in M:
    if row[1]%2 == 1:
        col2.append(row[1])
print col2
于 2009-11-12T05:02:01.330 回答