筛选奇数

2 投票
4 回答
1442 浏览
提问于 2025-04-15 15:55
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。

撰写回答