Python 基于条件查找最后一个元素索引

Python 基于条件查找最后一个元素索引,python,list,Python,List,我有一个字符串列表,例如 lst = ['2', '\n', '4', '\n', '\n'] 我正在尝试确定最后一个字符串元素的索引点,该元素不是'\n'。在上面的示例中,索引点为2,因为“4”是值不是“\n”的最后一个元素 我可以找到“\n”easy等的首次出现: lst.index('\n') 有没有办法找到不是特定字符串字符的元素的最后一次出现?您可以将“下一步”与“枚举”一起使用,然后从列表长度中减去结果: lst = ['2', '\n', '4', '\n', '\n'] i

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

lst = ['2', '\n', '4', '\n', '\n']
我正在尝试确定最后一个字符串元素的索引点,该元素不是'\n'。在上面的示例中,索引点为2,因为“4”是值不是“\n”的最后一个元素

我可以找到“\n”easy等的首次出现:

lst.index('\n') 
有没有办法找到不是特定字符串字符的元素的最后一次出现?

您可以将“下一步”与“枚举”一起使用,然后从列表长度中减去结果:

lst = ['2', '\n', '4', '\n', '\n']
idx = len(lst) - next(i for i, val in enumerate(reversed(lst), 1) if val != '\n')  # 2
或者,按照@Chris_Rands的建议,通过倒计时的范围向后迭代:

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

最简单的方法可能是向后循环列表,直到找到符合标准的元素。我不认为这是重复。。。我建议您创建一个函数,并在enumeratelst:ignore/n中使用for idx,el,并存储在变量中找到的最后一个字符串,最后返回变量。@interjay,已重新打开,因为我同意这不是重复的,可能有更好的,但尚未提出。@interjay,因为我无法通过阅读那篇文章推断出这个问题的答案;看来我也不是唯一一个。可能有一个更好的复制目标,但我找不到它。@jpp这并没有回答我的问题。这两个问题有什么不同?快告诉我+1为反向。我会添加一个默认值,以防下一个循环耗尽它的迭代器?或者更具可读性?@DeepSpace,我认为这是无法避免的。当然,这里的明智选择是使用反转来向后工作,而不是向前。@jpp是的,我想你是对的,我在想一些方法来避免lenlst,但我想你不能。有时我想知道,如果lst[I]!='\不?