gpt4 book ai didi

Python 按真实性过滤列表

转载 作者:行者123 更新时间:2023-12-01 22:32:13 25 4
gpt4 key购买 nike

我对 python 有点陌生,一直在使用像第一个列表这样的字符串列表,并且希望将其过滤到仅真实值,如第二个列表中所示。

l = ['value1', 'value2', '', None, 'value3']
l = ['value1', 'value2', 'value3']

我之前一直按照以下方式进行操作(最近的第二种方式)

new_l = filter(lambda x: x, l)
new_l = filter(bool, l)

这个解决方案是否有更Pythonic的方法?

最佳答案

如果第一个参数为None filter自动删除 bool 上下文中所有计算结果为 False 的元素。我认为这是最Pythonic的方法:

>>> filter(None, [1, 3, 0, 5, 3])
[1, 3, 5, 3]

摘自 Python 文档:

Construct a list from those elements of iterable for which function returns true. iterable may be either a sequence, a container which supports iteration, or an iterator. If iterable is a string or a tuple, the result also has that type; otherwise it is always a list. If function is None, the identity function is assumed, that is, all elements of iterable that are false are removed.

替代选项是 Python 2 上的列表理解和 Python 3 上的生成器表达式。使用它们的好处是,无论您使用什么 Python 版本,它们的行为都是相同的,这与 filter 不同。在 Python 3 上返回迭代器而不是列表:

>>> l = [1, 3, 0, 5, 3]
>>> [x for x in l if x]
[1, 3, 5, 3]
>>> list(x for x in l if x)
[1, 3, 5, 3]

关于Python 按真实性过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37311957/

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