use*_*853 4 python list filter
我有一个如下所示的数据结构:
[(1, 2), (2, 3), (4, 0), (5, 10), (6, 0), (7, 0)]
Run Code Online (Sandbox Code Playgroud)
在第二个元素为0的列表末尾仅过滤掉元组的最佳方法是什么?
所需的输出是:
[(1, 2), (2, 3), (4, 0), (5, 10)]
Run Code Online (Sandbox Code Playgroud)
这听起来像你想要一个' rstrip()for lists'.您可以使用.pop()while循环:
while somelist and somelist[-1][1] == 0:
somelist.pop()
Run Code Online (Sandbox Code Playgroud)
这改变了列表到位.
要创建副本,您必须首先找到切片端点,然后切片到该点以进行快速复制:
end = len(somelist)
while end and somelist[end - 1][1] == 0:
end -= 1
newlist = somelist[:end]
Run Code Online (Sandbox Code Playgroud)