为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

眼眸繁星 2019-09-24 10:28:25
说我有这个清单:li = ["a", "b", "a", "c", "x", "d", "a", "6"]据帮助显示,没有内置函数返回字符串的最后一次出现(如的反向index)。因此,基本上,如何找到"a"给定列表中的最后一个出现?
查看完整描述

3 回答

?
倚天杖

TA贡献1828条经验 获得超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')


查看完整回答
反对 回复 2019-09-24
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

像伊格纳西奥(Ignacio)一样的单线飞机会更简单/更清晰


max(loc for loc, val in enumerate(li) if val == 'a')

在我看来,这似乎很清楚且具有Python风格:您正在寻找包含匹配值的最高索引。不需要下一步,lambda,reverses或itertools。


查看完整回答
反对 回复 2019-09-24
  • 3 回答
  • 0 关注
  • 1801 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信