如果您实际上仅使用示例中显示的单个字母,则将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。