gpt4 book ai didi

python - 序列查找功能?

转载 作者:IT老高 更新时间:2023-10-28 22:17:51 28 4
gpt4 key购买 nike

如何在满足特定条件的序列中找到对象?

列表理解和过滤器会遍历整个列表。唯一的选择是手工循环吗?

mylist = [10, 2, 20, 5, 50]
find(mylist, lambda x:x>10) # Returns 20

最佳答案

这是我使用的模式:

mylist = [10, 2, 20, 5, 50]
found = next(i for i in mylist if predicate(i))

或者,在 Python 2.4/2.5 中,next() 不是内置函数:

found = (i for i in mylist if predicate(i)).next()

请注意,如果没有找到元素,next() 会引发 StopIteration。在大多数情况下,这可能很好。您要求第一个元素,不存在这样的元素,因此程序可能无法继续。

另一方面,如果您确实知道在这种情况下该怎么做,则可以为 next() 提供默认值:

conf_files = ['~/.foorc', '/etc/foorc']
conf_file = next((f for f in conf_files if os.path.exists(f)),
'/usr/lib/share/foo.defaults')

关于python - 序列查找功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6039425/

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