筛选奇数
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 个回答
0
你在测试 row[1]%2
,但是打印的是 row[1]+1
。
所以当 row[1]==2
时,它是偶数,但你却把 3
加到结果里。
当 row[1]==5
时,它是奇数,所以你把它过滤掉了。
而当 row[1]==8
时,它是偶数,但你却把 9
加到结果里。
2
我觉得你需要把比较的部分从 == 0
改成 == 1
。
任何数字除以2的余数要么是0,要么是1,余数是1的时候说明这个数字是奇数。
6
这段代码的工作方式正是你所期待的——如果第二个数字是偶数,就把它加一,然后放进列表里。
对于第一行,它检查2 % 2 == 0,这个判断是对的,所以它把col2[0]设置为2 + 1 = 3。对于第二行,5 % 2 == 0,这个判断是错的。对于第三行,8 % 2 == 0,这个判断是对的,所以col2[1] = 8 + 1 = 9。