根据条件查找最后一个元素索引

ars*_*l88 4 python list

我有一个字符串列表,例如

lst = ['2', '\n', '4', '\n', '\n']
Run Code Online (Sandbox Code Playgroud)

我试图确定最后一个不是“\n”的字符串元素的索引点。在上面的示例中,索引点将为 2,因为“4”是值不是“\n”的最后一个元素。

我可以很容易地找到第一次出现 '\n' 等:

lst.index('\n') 
Run Code Online (Sandbox Code Playgroud)

有没有办法找到不属于特定字符串字符的元素的最后一次出现?

jpp*_*jpp 5

您可以使用nextwith enumerate,然后从列表的长度中减去结果:

lst = ['2', '\n', '4', '\n', '\n']
idx = len(lst) - next(i for i, val in enumerate(reversed(lst), 1) if val != '\n')  # 2
Run Code Online (Sandbox Code Playgroud)

或者,按照 @Chris_Rands 的建议,通过range倒计时的 a 向后迭代:

idx = next(i for i in range(len(lst)-1, -1, -1) if lst[i] != '\n')  # 2
Run Code Online (Sandbox Code Playgroud)