过滤奇数

时间:2009-11-12 04:43:30

标签: python list-comprehension modulo

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 :(得分: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