每次运行此代码时,我都会收到一个"超出范围错误"。我正在尝试获取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]