回答
- n个元素:
lst = lst[:len(lst)-n]
注:这是不是记忆中的操作。它会创建一个副本。
请注意,这实际上使列表副本达到第n个元素,尽管它通常不会产生太大的影响 – jamylak
哦.. :)做了一个便条 – karthikr
这怎么可能是被接受的答案?!它甚至没有给出正确的结果.. – Vincenzooo
Works为n >= 1
>>> L = [1,2,3, 4, 5]
>>> n=2
>>> del L[-n:]
>>> L
[1, 2, 3]
这与其他答案提到的问题相同:它不适用于n <= 0(0删除列表,<0从列表的前面删除,这可能是正确的,但可能不是)。如果您可以抽出时间复制名单,我认为卢卡花旗的切片答案会更好,否则您需要检查n> 0。 –
@丹尼尔B.它在n <= 0时不起作用,但它是一个简单的解决方案,可以解决许多用例的需求。还有助于教育新来Python的人。任何人都可以随意使用任何解决方案,所以它的好处是我们有各种各样的 – jamylak
我看到这个被问得早,但没有做到了我的答案;如果我们想得到一个没有最后N个元素的列表,但保留原始列表:你只需要做list[:-n]
。如果您需要处理n
可能等于0
的情况,那么您需要处理list[:-n or None]
。
>>> a = [1,2,3,4,5,6,7]
>>> b = a[:-4]
>>> b
[1, 2, 3]
>>> a
[1, 1, 2, 3, 4, 5, 7]
就这么简单。
这是其中pythonic
不适用于我的情况之一,可以给隐藏的错误或混乱。 以上都不适用于n = 0的情况。 使用在一般情况下l[:len(l)-n]
作品:
l=range(4)
for n in [2,1,0]: #test values for numbers of points to cut
print n,l[:len(l)-n]
这是例如在功能修整载体,要离开的可能性不切东西的边缘是有用的。
正如Vincenzooo所说的,当n==0
时pythonic lst[:-n]
不起作用。
所有n>=0
以下工作:
lst = lst[:-n or None]
我喜欢这个方案,因为它是英文那种可读太:“返回片省略最后n个元素或无(如果没有需要被忽略)”。
此解决方案是因为以下几点:
x or y
评估为x
时x
是逻辑真(例如,当它不0
,""
,False
,None
,...)和y
否则。所以-n or None
是-n
,当时n!=0
和None
当n==0
。- 切片时,
None
相当于省略该值,因此lst[:None]
与lst[:]
(请参阅here)相同。
这个解决方案是迄今为止最pythonic和PEP8友好。这是非常好的,因为它解释了0的情况。但是,要回答问题时,您可能想要将答案更改为如下所示的分配:“lst = lst [: - n或None]” –
- 1. 从angularjs中删除列表中的最后一个元素
- 2. 如何删除matlab中矩阵的最后n个元素?
- 3. 如何删除列表中的最后一个元素用C
- 4. 如何删除列表中元素的最后2个字符?
- 5. 删除Python 3中列表中每个列表的最后一个元素
- 6. 阵列的最后n个元素
- 7. 从python 2.7的列表中删除每个第n个元素
- 8. 通过id删除最后n行0,然后通过R删除最后n个元素
- 9. 从列表中删除最后一个元素
- 10. 从列表视图中删除最后一个元素
- 11. 从Prolog中的列表中删除前N个元素
- 12. 删除列表中的所有N个元素
- 13. 删除在Python列表的最后一个元素失败
- 14. 无法删除python列表的最后一个元素
- 15. 使用C删除列表中的最后n个项目#
- 16. jQuery:删除前n个元素之后的所有元素?
- 17. 的multi_index_container删除最后一个元素
- 18. 从列表中删除第n个元素
- 19. 需要删除序列中的最后一个元素
- 20. 删除元素,并从列表中删除下列元素
- 21. CSS:删除最后一个元素,在
- 22. 多集删除最后一个元素
- 23. android删除任何项目从列表视图删除最后一个元素
- 24. 删除单链表中的最后一个元素
- 25. 删除python中的列表字典中的最后一个元素
- 26. 如何从Scheme的列表中删除第二个到最后一个元素?
- 27. 如何从序言中删除列表中的最后一个元素?
- 28. 如何删除C中链接列表中的最后一个元素?
- 29. 列表方法删除列表中的最后一个元素以及所有元素
- 30. 如何擦除C++映射中的最后n个元素?
不要打电话给你的名单,“列表”。或者你将无法使用内置的“列表”类别 – jamylak
丹尼尔,请选择适当的答案(卢卡花旗)这个问题。 – Sheljohn