python - 具有多个条件的列表理解(python)

标签 python list

以下代码在 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"

列表理解过滤器子句是 elem for x in y if thing 中的 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/

相关文章:

python - 将列匹配并添加到数据框

Python C API : How to check if an object is an instance of a type

c# - 将JSON的每个解析值存储到一个数组中

list - Prolog:检查两个列表是否具有相同的元素

python - 如何检查列表是否只包含某个项目

python - Django - 模型继承

python - 我如何在 django (haystack with whoosh) 中使用拼写检查?

python - 比较用户输入的 key :value relationship in a dictionary

java - 列表/集合中的添加函数显示 boolean 值

python - bisect算法的复杂度是多少?