我想整理所有尾随a
值的列表,其中a
是任意值。
示例:
[1, 2, 3, a, 5, a, a, a, a]
→[1, 2, 3, a, 5]
另一个例子。说a = None
:
[1, None, 2, None, 3, None, None, None, 7, None, None, None, None, None, None]
→[1, None, 2, None, 3, None, None, None, 7]
filter
会删除它们,但也会删除它们之间的内容。我想要一种维持顺序,保留中间元素并仅删除尾随元素的方法。
答案 0 :(得分:3)
最简单的解决方案是使用pop
,该操作将删除列表末尾的元素。此解决方案是就地的,这意味着它将更改输入列表的内容。
def remove_trailing(lst, val=None):
while lst and lst[-1] == val:
lst.pop()
用法:
>>> lst = [1, 2, 3, None, 5, None, None, None, None]
>>> remove_trailing(lst)
>>> lst
[1, 2, 3, None, 5]
答案 1 :(得分:1)
假设您的列表是[1, 2, 3, -1, 5, -1, -1, -1, -1]
,其中-1
是任意值。
list = [1, 2, 3, -1, 5, -1, -1, -1, -1]
i = len(list) - 1
while i >= 0 and list[i] == -1:
i = i-1
print(list[:i+1])
上面的代码将删除最后连续出现的所有任意值。希望对您有帮助!