当不能保证列表至少有N个长度时,将列表截断为N个索引的大多数python方法?

2024-05-13 10:49:23 发布

您现在位置:Python中文网/ 问答频道 /正文

当不能保证列表的长度为N时,什么是将列表截断为N个索引的最python方法?像这样的:

l = range(6)

if len(l) > 4:
    l = l[:4]

我对python还不太熟悉,正在努力学习pythonic的思维方式。我甚至想截断这个列表的原因是,我要用期望的长度枚举它,我只关心前4个元素。


Tags: 方法元素列表lenif方式range原因
3条回答

到目前为止,所有的答案都不会截断列表。他们按照您的示例将名称分配给一个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如果它太短,请尝试以下操作:

lst = (lst + [0] * 4)[:4]

当您有这样的问题时,通常可以尝试看看会发生什么,或者在文档中查找它。

顺便说一下,命名变量list是不好的;这将阻止您引用内置的list类型。

相关问题 更多 >