以下代码在Python中有效
var=range(20)
var_even = [0 if x%2==0 else x for x in var]
print var,var_even
但是,我认为条件必须放在列表的末尾。如果我编写代码
var_even = [0 if x%2==0 for x in var]
那就行不通了。是否有一个原因?
最佳答案
这里涉及两种截然不同但外观相似的语法,即条件表达式和列表理解过滤器子句。
条件表达式的格式为x if y else z
。此语法与列表推导无关。如果要在列表理解中有条件地包含一件事或另一件事,则可以使用以下方法:
var_even = [x if x%2==0 else 'odd' for x in var]
# ^ "if" over here for "this or that"
列表理解过滤器子句是
if thing
中的elem for x in y if thing
。这是列表理解语法的一部分,并且在for
子句之后。如果要在列表推导中有条件地包括或不包括元素,可以使用以下方法:var_even = [x for x in var if x%2==0]
# ^ "if" over here for "this or nothing"
关于python - 列出具有多个条件的理解(python),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38402777/