繁体   English   中英

在Python列表理解中将if用于多个输入列表

[英]Using if for multiple input lists in Python list comprehension

当有多个输入列表时,如何在列表推导中使用if语句。 这是我正在使用的代码以及出现的错误:

(我知道它无法将模数应用于列表,但是不确定在迭代每个列表时如何具体引用x)

a = [1,2,3]
b = [4,5,6]

nums = [x**2 for x in (a,b) if x%2==0]
print(nums)

TypeError: unsupported operand type(s) for %: 'list' and 'int'

这不是if语句的原因,这里的问题是x in (a, b) 当执行该命令时, x接受一个list值(首先a ,然后是b ),然后Python将尝试尝试在其上执行if条件,其形式为:

[1, 2, 3] % 2

完成,这显然是不允许的。

相反,使用chainitertools到链中列出了一起,使x从中取值:

a = [1,2,3]
b = [4,5,6]

nums = [x**2 for x in chain(a,b) if x%2==0]
print(nums)
[4, 16, 36]

如果您使用的是Python >= 3.5还可以解压缩列表文字[]

nums = [x**2 for x in [*a, *b] if x%2==0] 

正如吉姆说,你是mod的列表为int

您也可以使用+ ,例如nums = [x**2 for x in a+b if x%2==0]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM