在Python3中,向列表中超出范围的索引处添加元素

2024-04-25 17:59:38 发布

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

在其他语言(如javascript)中,当向索引范围之外的数组添加值时,将使用未定义的值“扩展”数组,直到指定的索引。你知道吗

示例:

var arr = [1,2,3]
arr[4] = 4
console.log(arr) // [1,2,3,undefined,4]

当我在Python中尝试这样做时,我得到了一个列表赋值索引超出范围的错误。你知道吗

在Python中有没有同样的方法?你知道吗


Tags: 方法log语言示例列表var错误数组
2条回答

您可以将list子类化并重写__setitem__方法,以便它根据给定索引的要求扩展列表,该索引也可以是slice对象,在这种情况下,应该使用切片的startstop属性中的较大者:

class List(list):
    def __setitem__(self, index, value):
        self.extend([None] * ((max(index.start, index.stop - 1) if isinstance(index, slice) else index) - len(self) + 1))
        super().__setitem__(index, value)

以便:

arr = List((1, 2, 3))
arr[5] = 5
print(arr)
arr[7:9] = [4, 5]
print(arr)

输出:

[1, 2, 3, None, None, 5]
[1, 2, 3, None, None, 5, None, 4, 5]

请注意,问题中的预期输出是不正确的,因为5的索引实际上指的是列表中的第6项,而不是第5项。你知道吗

你是说

my_list = [1, 2, 3, 4]
my_list.append(None)
my_list.append(5)

结果:[1,2,3,4,无,5]

??? 我可能误解了这个问题,但是

相关问题 更多 >