python - 当我尝试使用 'for' 循环更改列表的值时,为什么代码不工作(此处)?

标签 python

假设有这个随机列表:

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/

相关文章:

python - Pandas 按两列分组,仅根据计数保留满足条件的记录

python - 优化 Python 中的函数以处理大块数据

python - 从字符串中获取二进制数据

python - os.environ ['http_proxy' ] 不工作

python - Django OneToOneField 可能有空白字段

python - 在 Python 中对混合列表进行排序

python - 阅读 RSS 提要并在 Django 模板中显示它 |提要解析器

python - 为什么TensorFlow的Fashion MNIST问题中keras神经网络第二层有128个节点

python - 合并和拆分 Pandas 数据框中的列

python - 如何在 Qt 应用程序中嵌入 Python 解释器?