Python 如何将列表中的偶数相乘?
我尝试使用以下代码将列表中的偶数相乘:Python 如何将列表中的偶数相乘?,python,python-3.x,list,Python,Python 3.x,List,我尝试使用以下代码将列表中的偶数相乘: L3 = [1,7,9,9,4,1,11] L3 = [item * 2 for item in L3 if item % 2 == 0] print("test ",L3) 但是新列表只包含[8],为什么其他项目不见了?您可以尝试以下方法: L3=[1,7,9,9,4,1,11] L3=[如果项目%2==0,则项目*2;L3中项目的其他项目] 打印(“测试”,L3) 您将它们留在了原始列表中。您需要一个条件来携带原始值或新值: L3
L3 = [1,7,9,9,4,1,11]
L3 = [item * 2 for item in L3 if item % 2 == 0]
print("test ",L3)
但是新列表只包含[8],为什么其他项目不见了?您可以尝试以下方法:
L3=[1,7,9,9,4,1,11]
L3=[如果项目%2==0,则项目*2;L3中项目的其他项目]
打印(“测试”,L3)
您将它们留在了原始列表中。您需要一个条件来携带原始值或新值:
L3 = [item * 2 if item % 2 == 0 else item
for item in L3]
这将为列表中的每个元素选择一个值或另一个值
如果您先介绍“不更改”和较短的子句,则可读性会更好一些:
L3 = [item if item % 2 == 1 else item * 2
for item in L3]
。。。由于布尔编码为1(真)和0(假),因此可以省略常量:
L3 = [item if item % 2
else item * 2
for item in L3]
只是使用按位and运算符的另一个选项:
L3 = [1,7,9,9,4,1,11,2]
[(1-x&1)*x+x for x in L3]
#=> [1, 7, 9, 9, 8, 1, 11, 4]
举例说明:
3&1 #=> 1
1-3&1 #=> 0
4&1 #=> 0
1-4&1 #=> 1
因此,您可以在if-then语句中使用
x&1
,或者直接将其用作公式,就像我所做的那样:(1-x&1)*x+x
,因为4
是唯一的偶数成员;由于if
,所有其他函数都不会生成值<代码>[8]是将每个偶数乘以2
得到的结果。