gpt4 book ai didi

Python:从末尾遍历列表找到第一个满足条件的元素

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:57 31 4
gpt4 key购买 nike

我想遍历列表末尾的元素,以找到最后一次出现的包含“}”的元素的索引。

理想情况下,我想使用迭代器来保持效率,而不是实际反转整个列表或搜索匹配此条件的所有事件。

如果我要找到第一个出现的地方,我会使用:

next(i for i,x in enumerate(list) if '}' in x)

但是,我尝试了类似的方法,使用 reversed 创建一个反向迭代器,但这似乎不起作用,大概是因为 enumerate 不处理迭代器,或者我误解了...

next(i for i,x in enumerate(reversed(list)) if '}' in x)

我知道这样做的其他方法是:

[i for i,x in enumerate(list) if '}' in x][-1]

或:

next(i for i,x in enumerate(list[::-1]) if '}' in x)

但是,我正在寻找最有效的方法。我当然可以编写一个循环以提高效率,但我想知道是否有一种使用可用函数的巧妙方法。

我是 Python 的新手,所以不要着急,如果我有任何误解,请告诉我。我正在使用 Python 2.7。

提前致谢。

最佳答案

def rfind(lst, condition):
return next((len(lst) - n
for (n, i) in enumerate(reversed(lst), 1)
if condition(i)),
-1) # If we couldn't find anything, return -1

>>> lst = ['{b}', '[c]', '{a}', 'g']
>>> print rfind(lst, lambda i: '{' in i)
2
>>> print rfind(lst, lambda i: 'q' in i)
-1

关于Python:从末尾遍历列表找到第一个满足条件的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31615562/

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