如果python列表的长度大于给定值(比如10),那么我想将该列表中的最后10个元素提取到新列表中。 我怎样才能做到这一点? 我尝试区分len(my_list) - 10并将其用作:new_list = [(len(my_list) - 10):]这不起作用
有什么建议吗? 提前致谢
答案 0 :(得分:90)
它就像:
一样简单my_list[-10:]
答案 1 :(得分:19)
这显示了如何将长列表切割成最大大小,并将其余列表放在新列表中。这不完全是你所要求的,但它可能是你真正想要的:
>>> 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]
>>>
答案 2 :(得分:14)
Python教程有一节如何使用列表切片:http://docs.python.org/tutorial/introduction.html#lists
在你的情况下,它就像写作一样简单:
new_list = my_list[-10:]
答案 3 :(得分:4)
实际上,你问题陈述中的下标完美无缺 - 你可以自己粘贴你在尝试使用它时看到的错误或意外结果吗?以下是您建议的下标的成功运行:
>>> 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关于切片的约定 - 而是给你一个错误。