我正在尝试解决Python上看似简单的问题。我试图将列表的最后3个元素更新为其他整数。这是代码:
list = [0,1,2,3,4]
for i in xrange(len(list[2:])):
list[2:][i] = 44444
print list
但是当我打印列表时,它仍然保持不变。我观察调试器中的更改,发现列表没有在循环中更新。我尝试在Google和Stack Overflow上搜索其他地方,但它们都没有提供这个简单问题的答案。
让我知道你们对此的看法。谢谢。
答案 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)