Python—如何从列表中提取最后的x元素

Python—如何从列表中提取最后的x元素,python,Python,如果python列表的长度大于给定值(比如10),那么我想将该列表中的最后10个元素提取到一个新列表中。 我该怎么做? 我尝试获取len(my_list)-10之间的差异,并将其用作:new_list=[(len(my_list)-10):],这不起作用 有什么建议吗? 请提前感谢简单到: my_list[-10:] 附加评论:(来自评论部分) 如果初始列表少于10个元素,则此解决方案仍然有效,生成整个列表。例如,如果my_list=[1,2,3],那么my_list[-10:]等于[1,2,

如果python列表的长度大于给定值(比如10),那么我想将该列表中的最后10个元素提取到一个新列表中。 我该怎么做? 我尝试获取len(my_list)-10之间的差异,并将其用作:new_list=[(len(my_list)-10):],这不起作用

有什么建议吗?
请提前感谢

简单到:

my_list[-10:]
附加评论:(来自评论部分)


如果初始列表少于10个元素,则此解决方案仍然有效,生成整个列表。例如,如果
my_list=[1,2,3]
,那么
my_list[-10:]
等于
[1,2,3]

Python教程中有一节如何使用列表切片:

在您的情况下,只需写下:

 new_list = my_list[-10:]

这显示了如何将一个长列表切碎为最大大小,并将其余的放入一个新列表中。这并不完全是你想要的,但可能是你真正想要的:

>>> list1 = [10, 20, 30, 40, 50, 60, 70]
>>> max_size = 5
>>> list2 = list1[max_size:]
>>> list2
[60, 70]
>>> list1 = list1[:max_size]
>>> list1
[10, 20, 30, 40, 50]
这更像是你在问什么,基本上是一样的,但从最后一张新的清单:

>>> list1 = [10, 20, 30, 40, 50, 60, 70]
>>> list2 = list1[:max_size]
>>> list2
[10, 20, 30, 40, 50]
>>> list2 = list1[-max_size:]
>>> list2
[30, 40, 50, 60, 70]
>>> list1 = list1[:-max_size]
>>> list1
[10, 20]
>>> 

事实上,你的问题陈述中的下标工作得很好——你能准确地粘贴在你自己尝试使用它时看到的错误或意外结果中吗?下面是您建议的成功运行的下标:

>>> my_list = list('abcdefghijklmnop')
>>> new_list = my_list[(len(my_list) - 10):]
>>> new_list
['g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p']
问题是您忘记在切片符号前面命名
my_list

编辑:正如Felix所指出的,您应该防止索引变为负值:

my_list[max(0, len(my_list) - 10):]

当然,正如其他答案所指出的,恒定的负指数实际上是实现目标的最简单方法;但我想首先关注的是,为什么您获取最后十个元素的“自己的方式”——这是有意义的,即使它没有充分利用Python关于切片的约定——反而给了您一个错误。

已经有了两个很好的答案,这并没有增加多少。很抱歉投了反对票。@Benjamin:抛开以下事实不谈:a)一个实际的交互示例可能非常有用,b)我在看到其他答案之前就开始回答这个问题,您完全不理解在堆栈溢出上投反对票的目的。祝贺你,祝你有美好的一天@本杰明:附:供将来参考:“我什么时候应该投反对票?每当你遇到一篇非常草率、不费力气的帖子,或者一个答案显然可能是危险的错误时,请使用你的反对票。”()供将来参考:人们出于不同的原因使用反对票,我的理由如上所述。如果答案是正确的,那么我的反对票将被支持投票的选民所反击。也许有一些支持反对投票的徽章,所以本杰明这样做了。:)@德卡明斯对此不太担心。他得到了-1代表负票(除了你的-2)。当他的名单长度<10.ooh时,你是正确的。我刚刚忘记了我的清单:(@FelixYan-你说得对,我会解决的!没有必要防止出现负的片段边界。@hop-是的,有。例如,如果他的列表长度为9,索引将变为-1,这将只给他列表末尾的一个元素片段,而不是他实际上想要的9个元素(假设,如果他不能得到十个元素,他希望“尽可能接近十个”)。仍然需要指出的是,如果初始列表少于10个元素,则此解决方案仍然可以生成整个列表。例如,如果
my_list=[1,2,3]
,则
my_list[-10:
等于
[1,2,3]
。“不工作”不是有效的故障描述。