假设有这个随机列表:
st=['smthg','xyz','random','000','666']
我想使用这个 for 循环更改索引 1 到 3 的值:
for anythg in st:
st[1:3]='whtevr'
shell(IDLE) 对此没有任何响应,命令行卡住(但是,cmdln 在中断执行并输入“st”后,它开始显示:
't','e','v','r','t','e','v','r','t','e','v','r','t','e','v','r','t','e','v',
无穷无尽,直到再次按下 ctrl+C )。
我知道正确执行的正确方法是:
for i in range(1,4):
st[i]='whtevr'
不过,我仍然期待一个关于为什么前一个不起作用的答案? (仍然是初学者问题。)
*
最佳答案
首先在代码中:
for anythg in st:
st[1:3]='whatever'
您不需要循环,因为那样只会将相同的操作重复两次。
st[1:3]='whatever'
st[1:3]
表示 ['xyz', 'random']
。当您将其分配给 'whatever'
时,它只会更改这两个变量:
['smthg', 'w', 'h', 'a', 't', 'e', 'v', 'e', 'r', '000', '666']
它将 ['xyz', 'random']
替换为 'whatever'
。这就是导致您看到的行为的原因。
关于python - 当我尝试使用 'for' 循环更改列表的值时,为什么代码不工作(此处)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56359947/