Python列表没有更新

时间:2017-05-28 07:35:32

标签: python list loops integer

我正在尝试解决Python上看似简单的问题。我试图将列表的最后3个元素更新为其他整数。这是代码:

list = [0,1,2,3,4]
for i in xrange(len(list[2:])):
    list[2:][i] = 44444

print list 

但是当我打印列表时,它仍然保持不变。我观察调试器中的更改,发现列表没有在循环中更新。我尝试在Google和Stack Overflow上搜索其他地方,但它们都没有提供这个简单问题的答案。

让我知道你们对此的看法。谢谢。

3 个答案:

答案 0 :(得分:2)

列表的一个片段是一个新列表;它没有引用原始或类似的东西。改为分配给SourceControl。 (您可以避免使用额外的切片以相同的方式获得长度。)

SourceControl

答案 1 :(得分:0)

切片会创建一个新列表,除非您为其指定:

>>> values = [0, 1, 2, 3, 4]
>>> values[-3:] = [4444] * 3
>>> values
[0, 1, 4444, 4444, 4444]

答案 2 :(得分:0)

通过使用for i in xrange(len(list[2:])):,您将列表的长度从5减少到3.您的循环将仅针对前3个列表项进行迭代。 相反,你可以做这样的事情:

a=[0,1,2,3,4,5]
for i in range(3,len(a)):
   a[i]=444
print(a)