如何在不出错的情况下移动列表中的元素



每次运行此代码时,我都会收到一个"超出范围错误"。我正在尝试获取I=0到I=2等的值。

element = [x for x in range(10)]
l = len(element)
print(element)
for i in range(l):
   element[i] = element[i+1]
print(element)

我建议从将for i in range(l)更改为for i in range(l-1)开始。这将确保索引i+1小于l

这样做的问题是element的最后一个元素不会被更改,但如何处理该元素取决于您。

如果我正确理解问题,您的预期结果是将element从:更改为

[0,1,2,3,4,5,6,7,8,9]

到:

[0,0,1,2,3,4,5,6,7,8]

首先,循环走得太远了一项-i的最后一个值将是最后一个元素的索引;使得CCD_ 7不存在。这很容易修复:

for i in range(l-1):

但是还有另一个问题:element[i] = element[i+1]element[1]移动到element[0]等等,所以方向是错误的——你想要的是:

    element[i+1] = element[i]

无论如何,只复制第一个元素:要容易得多,效率也更高

element.insert(0, element[0])

并删除最后一个:

element.pop()

如果我误解了,而你的预期结果实际上是:

[1,2,3,4,5,6,7,8,9]

然后

element.pop(0)

更简单。

您正试图将最后一个值复制到一个尚不存在的索引中。最后一个值必须使用append。

element = [x for x in range(10)]
for i in range(len(element)):
    if i == len(element):
        element.append(element[i])
    else:
        element[i] = element[i+1]

最新更新