首页 > 解决方案 > 为什么每个循环(据我了解)无法对数组执行操作?

问题描述

我四处寻找有关此处看到的这种循环的信息:

listOfStrings = ["hey", "I", "am","still", "here"]
listOfStringsCopy = ["hey", "I", "am", "still", "here"]

for i in range(len(listOfStrings)):
    listOfStrings[i] = "something else"

for word in listOfStringsCopy:
    word = "something else"

print(listOfStrings, listOfStringsCopy)

返回:

 ['something else', 'something else', 'something else', 'something else', 'something else']
 ['hey', 'I', 'am', 'still', 'here']

我现在才开始理解为什么当您尝试对正在循环的列表执行任何操作时,这个特定的(for word in)循环似乎完全无效。我想我记得在某处读过,为每个循环制作列表或其他内容的副本,但找不到任何具体的东西。

首先,我是否正确地指代了这种循环?即使上面的第一个循环具有非常相似的语法,我在 python 上运行的第二个 for 循环是“for each loop”吗?

其次,有人可以解释为什么会这样,当我尝试对除了键/字典进程之外的列表做任何事情时,我是否应该坚持常规的第一个循环?

我已经阅读了可能的重复问题,它回答了我的问题,因为每当我需要修改列表中的项目时,我都需要循环索引,但是我仍然想知道循环通过索引的循环之间是否有任何语言描述和一个循环遍历列表元素的循环,就像我的第二个循环一样。

标签: pythonpython-3.xfor-loop

解决方案


第二个循环:

for word in listOfStringsCopy:
    word = "something else"

没有修改现有列表,因为您实际上不是修改列表,而是重新绑定变量 ie word,这显然是我们希望它工作的方式。

这相当于:

x = [1,2,3,4,5]
y = x[0]
y = "something else"

现在,y 不是指列表 x 的第一个元素,而是指一个字符串“其他东西”。


推荐阅读