2024-05-13 10:49:23 发布
网友
当不能保证列表的长度为N时,什么是将列表截断为N个索引的最python方法?像这样的:
l = range(6) if len(l) > 4: l = l[:4]
我对python还不太熟悉,正在努力学习pythonic的思维方式。我甚至想截断这个列表的原因是,我要用期望的长度枚举它,我只关心前4个元素。
到目前为止,所有的答案都不会截断列表。他们按照您的示例将名称分配给一个new列表,该列表包含旧列表的前4个元素。若要截断现有列表,请删除索引为4或更高的元素。这样做非常简单:
del lst[4:]
继续做你真正想做的事,一种可能性是:
for i, value in enumerate(lst): if i >= 4: break do_something_with(lst, i, value)
Python会自动处理超出范围的列表索引。
In [5]: k = range(2) In [6]: k[:4] Out[6]: [0, 1] In [7]: k = range(6) In [8]: k[:4] Out[8]: [0, 1, 2, 3]
顺便说一下,退化切片行为在The Python tutorial中有解释。这是一个很好的开始,因为它很快就涵盖了很多概念。
这里有:
lst = lst[:4]
不管列表中的项目数是多少,即使少于4个,也可以使用。
如果您希望它总是有4个元素,用(比如)零填充,或者None如果它太短,请尝试以下操作:
None
lst = (lst + [0] * 4)[:4]
当您有这样的问题时,通常可以尝试看看会发生什么,或者在文档中查找它。
顺便说一下,命名变量list是不好的;这将阻止您引用内置的list类型。
list
到目前为止,所有的答案都不会截断列表。他们按照您的示例将名称分配给一个new列表,该列表包含旧列表的前4个元素。若要截断现有列表,请删除索引为4或更高的元素。这样做非常简单:
继续做你真正想做的事,一种可能性是:
Python会自动处理超出范围的列表索引。
顺便说一下,退化切片行为在The Python tutorial中有解释。这是一个很好的开始,因为它很快就涵盖了很多概念。
这里有:
不管列表中的项目数是多少,即使少于4个,也可以使用。
如果您希望它总是有4个元素,用(比如)零填充,或者
None
如果它太短,请尝试以下操作:当您有这样的问题时,通常可以尝试看看会发生什么,或者在文档中查找它。
顺便说一下,命名变量
list
是不好的;这将阻止您引用内置的list
类型。相关问题 更多 >
编程相关推荐