猿问

如何在Python列表中查找项目的最后一次出现

说我有这个清单:


li = ["a", "b", "a", "c", "x", "d", "a", "6"]

据帮助显示,没有内置函数返回字符串的最后一次出现(如的反向index)。因此,基本上,如何找到"a"给定列表中的最后一个出现?


眼眸繁星
浏览 1802回答 3
3回答

倚天杖

如果您实际上仅使用示例中显示的单个字母,则将str.rindex很方便。ValueError如果没有这样的项目,则会引发一个与list.index将引发的错误类别相同的错误类。演示:>>> li = ["a", "b", "a", "c", "x", "d", "a", "6"]>>> ''.join(li).rindex('a')6对于更一般的情况,您可以list.index在反向列表中使用:>>> len(li) - 1 - li[::-1].index('a')6这里的切片将创建整个列表的副本。短列表很好,但是对于li很大的情况,使用惰性方法可以提高效率:def list_rindex(li, x):    for i in reversed(range(len(li))):        if li[i] == x:            return i    raise ValueError("{} is not in list".format(x))一线版:next(i for i in reversed(range(len(li))) if li[i] == 'a')

哆啦的时光机

像伊格纳西奥(Ignacio)一样的单线飞机会更简单/更清晰max(loc for loc, val in enumerate(li) if val == 'a')在我看来,这似乎很清楚且具有Python风格:您正在寻找包含匹配值的最高索引。不需要下一步,lambda,reverses或itertools。
随时随地看视频慕课网APP

相关分类

Python
我要回答