【发布时间】:2020-09-07 13:28:50
【问题描述】:
这当然是可能的。搜索结果为零。
如何创建仅从源列表或其他可迭代项中选择某些值的列表推导(或任何类型的推导)?
示例
假设我只想要列表中的偶数。例如,给定:
a = [1, 2, 3, 4, 5, 6, 7]
我可以通过 for 循环轻松做到这一点,但需要初始化一个变量:
b = []
for item in a:
b.append(item) if item % 2 == 0
print(b)
返回:
[2, 4, 6]
但是如何在列表推导中做到这一点而不先初始化变量呢?
失败的列表理解
我试过了:
b = [ item if item % 2 == 0 for item in a ]
在for 之后返回SyntaxError: invalid syntax。
如果我添加一个 else xxx 它可以工作,但我必须拥有相同数量的总元素:
b = [ item if item % 2 == 0 else None for item in a ]
返回:
[None, 2, None, 4, None, 6, None]
如果项目不符合条件,我如何从最终理解中删除或过滤掉它们?
【问题讨论】:
-
好吧 this question 通读后肯定是重复的,其余的很接近,但不一样。仍然不确定为什么这些都没有出现在搜索中——即使是在发布之前给出的“相关答案”列表也没有任何这些新的链接。我并不惊讶这已经得到了回答!干杯!!
标签: python filter list-comprehension