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]
我希望它能过滤掉奇数,但它却反过来。
答案 0 :(得分:6)
代码完全符合您的预期 - 如果第二项是偶数,请将其增加一并将其放入列表中。
因此对于第一行,它看到2%2 == 0为True,并设置col2 [0] = 2 + 1 = 3.对于第二行,5%2 == 0为False。对于第三行,8%2 == 0为True,col2 [1] = 8 + 1 = 9.
答案 1 :(得分:2)
我认为您需要将比较从== 1
切换为== 0
。
当它是奇数时,任何数除以2的模数都是0或1,1。
答案 2 :(得分:0)
您正在测试row[1]%2
,但打印row[1]+1
因此,当row[1]==2
时,它是偶数,但您将3
附加到结果中
当row[1]==5
时,它很奇怪,所以你把它过滤掉了
当row[1]==8
时,它是偶数,但您要将9
附加到结果
答案 3 :(得分: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