Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将列表中的偶数相乘?_Python_Python 3.x_List - Fatal编程技术网

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
得到的结果。