如何在列表中移除每个列表的最后一个元素

4

我有一个列表,如下所示:

alist = [[a,b,(1,2)], [a,b,(1,2)], [a,b,(1,2)]]

我想从列表中删除所有元素的最后一个元素。因此,结果将是:
alist = [[a,b], [a,b], [a,b]]

有没有快速的方法来做这件事?

1
你正在使用哪个教程学习Python? - S.Lott
这是什么毫无意义的加法?你是什么意思说它不起作用?你为什么要发布一个答案中的代码? - SilentGhost
你的脚本在Python shell中可以运行,但在我的程序中无法运行,不知道为什么。这是什么意思? - S.Lott
2个回答

12

您可以使用列表推导式创建一个新列表,该列表移除了最后一个元素。

>>> alist = [[1,2,(3,4)],[5,6,(7,8)],[9,10,(11,12)]]
>>> [x[:-1] for x in alist]       # <-------------
[[1, 2], [5, 6], [9, 10]]

然而,如果您想要效率,您可以原地修改列表:

>>> alist = [[1,2,(3,4)],[5,6,(7,8)],[9,10,(11,12)]]
>>> for x in alist: del x[-1]       # <-------------
... 
>>> alist
[[1, 2], [5, 6], [9, 10]]

比我快了15秒。我不应该浪费时间想为什么这个人不使用好的Python教程。 - S.Lott
我感到有必要清理一些混乱。你的第一个答案几乎是完美的。详细的例子可能更有帮助,但是我认为如果少了两行分散注意力的代码,那个关键、清晰的代码行会更加明显。 - S.Lott
“如果你想要效率?”这句话是什么意思?这样做更有效率吗?你有一些数据来支持这个说法吗? - S.Lott
3
@S.Lott: 当然可以 http://www.ideone.com/4JajX。事实上,很明显第一个版本会更慢,因为整个列表都被复制了。 - kennytm

-2

这是基本的Python内容。在阅读Python教程后,您应该能够做到这一点。

>>> alist = [[1,2,(3,4)],[5,6,(7,8)],[9,10,(11,12)]]
>>> for li in alist:
...     print li[0:2]
...
[1, 2]
[5, 6]
[9, 10]
>>>

之后,您可以进入中级内容,如列表推导等


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接