Python 过滤奇数

Python 过滤奇数,python,list-comprehension,modulo,Python,List Comprehension,Modulo,输出:[3,9] 我希望它能过滤掉奇数,但它的作用正好相反。代码正按照您所期望的那样执行-如果第二项为偶数,则将其增加1,并将其放入列表中 因此,对于第一行,它看到2%2==0为True,并设置col2[0]=2+1=3。对于第二行,5%2==0为False。对于第三行,8%2==0为真,col2[1]=8+1=9。您正在测试行[1]%2,但正在打印行[1]+1 因此,当行[1]==2时,它是偶数,但您将3添加到结果中 当行[1]==5时,它是奇数,因此您将其过滤掉 当行[1]==8时,它是偶数

输出:
[3,9]


我希望它能过滤掉奇数,但它的作用正好相反。

代码正按照您所期望的那样执行-如果第二项为偶数,则将其增加1,并将其放入列表中


因此,对于第一行,它看到2%2==0为True,并设置col2[0]=2+1=3。对于第二行,5%2==0为False。对于第三行,8%2==0为真,col2[1]=8+1=9。

您正在测试
行[1]%2
,但正在打印
行[1]+1

因此,当
行[1]==2
时,它是偶数,但您将
3
添加到结果中
行[1]==5时,它是奇数,因此您将其过滤掉

行[1]==8
时,它是偶数,但您将
9
添加到结果中

我认为您需要将比较从
==0
切换到
==1


任何数字除以2的模是0或1,当它是奇数时是1。

Oh,所以它首先读取IF语句?我以为语句是左-右-右-是-列表理解在for循环之后允许多个条件,而左边的表达式是在考虑了所有这些条件后进行计算的。(技术解释:)嗯……不太可能。我试过这样做:对于范围(10)中的n:n=n%2,如果您将来发布您的预期输出,它会以奇数形式打印为“0”
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)
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