gpt4 book ai didi

python:列表分配索引超出范围

转载 作者:太空宇宙 更新时间:2023-11-04 06:46:33 25 4
gpt4 key购买 nike

  for row in c:
for i in range(len(row)):
if i not in keep:
del row[i]

我在最后一行收到这个错误:

IndexError: list assignment index out of range

我不明白如果它存在,它怎么会超出范围!请帮忙

最佳答案

如果 row 是一个列表,那么不要忘记删除列表的一个元素会将所有后续元素移回一个位置以填补空白,因此所有后面的索引都会进入列表将相差一(并且每次删除另一个元素时,每个索引中的错误都会增加一个)。有几种方法可以避免这个问题——举一个例子,尝试向后遍历列表。

要响应如何向后迭代,您可以尝试使用可以传递给 range 的额外参数.前两个参数给出了迭代的范围(包含下限,不包含上限),第三个参数是步骤:

>>> range(5)
[0, 1, 2, 3, 4]
>>> range(0, 5)
[0, 1, 2, 3, 4]
>>> range(3, 5)
[3, 4]
>>> range(3, 5, -1)
[]
>>> range(5, 3, -1)
[5, 4]

因此,在您的情况下,您似乎想要:

range(len(row) - 1, -1, -1)

或者更容易阅读(感谢 viraptor):

reversed(range(len(row))

或者,您可以尝试使用列表理解(我假设 c 是一个列表):

for row_number, row in enumerate(c):
c[row_number] = [x for i, x in enumerate(row) if i in keep]

关于python:列表分配索引超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3392677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com