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]
我期待它过滤掉奇数,但它恰恰相反。
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]
我期待它过滤掉奇数,但它恰恰相反。
代码完全符合您的预期 - 如果第二项是偶数,则将其加一并将其放入列表中。
因此,对于第一行,它看到 2 % 2 == 0 为 True,并设置 col2[0] = 2 + 1 = 3。对于第二行,5 % 2 == 0 为 False。对于第三行,8%2 == 0 为 True,col2[1] = 8 + 1 = 9。
我相信您需要将比较切换为== 1
from == 0
。
任何数除以 2 的模数为 0 或 1,奇数时为 1。
您正在测试row[1]%2
,但打印row[1]+1
,所以当 时row[1]==2
,它是偶数,但您附加3
到结果
时row[1]==5
,它是奇数,所以您过滤掉它
,当row[1]==8
它是偶数,但您附加9
到结果
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