如果python列表的长度大于给定值(比如10),那么我想将该列表中的最后10个元素提取到新列表中.我怎样才能做到这一点?我尝试区分len(my_list) - 10并将其用作:new_list = [(len(my_list) - 10):]这不起作用
有什么建议?提前致谢
Fel*_*Yan 97
它就像这样简单:
my_list[-10:]
Run Code Online (Sandbox Code Playgroud)
dka*_*ins 20
这显示了如何将长列表切割为最大大小,并将其余列表放在新列表中.这不完全是你要问的,但它可能是你真正想要的:
>>> 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]
Run Code Online (Sandbox Code Playgroud)
这更像你所要求的,基本相同,但从最后采取新的列表:
>>> 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]
>>>
Run Code Online (Sandbox Code Playgroud)
Ray*_*ger 14
Python教程有一节如何使用列表切片:http: //docs.python.org/tutorial/introduction.html#lists
在您的情况下,它就像写作一样简单:
new_list = my_list[-10:]
Run Code Online (Sandbox Code Playgroud)
实际上,您问题陈述中的下标效果很好——您能否准确粘贴一下您自己尝试使用时看到的错误或意外结果?这是您建议的下标的成功运行:
>>> my_list = list('abcdefghijklmnop')
>>> new_list = my_list[(len(my_list) - 10):]
>>> new_list
['g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p']
Run Code Online (Sandbox Code Playgroud)
问题仅仅是您忘记my_list在切片符号前命名吗?
编辑:正如 Felix 所指出的,您应该防止索引变为负值:
my_list[max(0, len(my_list) - 10):]
Run Code Online (Sandbox Code Playgroud)
而且,当然,正如其他答案所指出的,恒定的负指数实际上是实现目标的最简单方法;但我想首先关注为什么你“自己的方式”获取最后十个元素——这是有道理的,即使它没有充分利用 Python 关于切片的约定——反而给你一个错误。
| 归档时间: |
|
| 查看次数: |
65777 次 |
| 最近记录: |