gpt4 book ai didi

python - 对新元素进行条件列表理解

转载 作者:行者123 更新时间:2023-11-30 22:54:51 25 4
gpt4 key购买 nike

我将在那里窃取问题的形式:List comprehension with condition

我有一个简单的列表。

>>> a = [0, 1, 2]

我想使用列表理解从中创建一个新列表。

>>> b = [afunction(x) for x in a]
>>> b
[12458, None, 34745]

非常简单,但是如果我只想对非 None 元素进行操作怎么办?我可以这样做:

>>> b = [y for y in [afunction(x) for x in a] if y != None]

我宁愿能够在一次运行中通过单个列表理解来完成此操作。我相信这会再次迭代列表以过滤掉 None,但没有人真正喜欢这样。

最佳答案

您不需要构建列表然后再次迭代它,您可以使用将 afunction 应用到 a 中的元素的迭代器,可以使用 map :

[y for y in map(afunction, a) if y is not None]

或生成器表达式(注意括号类型的变化):

[y for y in (afunction(x) for x in a) if y is not None]
# ^ here ^ and here

另请注意,根据 PEP-8,这些测试是通过身份测试,而不是平等。 .

关于python - 对新元素进行条件列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37629382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com