为什么每个循环(据我所知)无法对数组执行操作?

时间:2018-09-04 03:18:19

标签: python python-3.x for-loop

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

Optional.empty()

返回:

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)

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

首先,我什至正确地提到了这种循环吗?即使上面的第一个循环具有令人难以置信的相似语法,我还是在python“ for each loop”上面运行了第二个for循环?

第二,有人可以解释这是为什么吗?当我尝试使用除键/字典过程之外的列表做任何事情时,是否应该坚持常规的第一个循环?

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

1 个答案:

答案 0 :(得分:0)

第二个循环:

for word in listOfStringsCopy:
    word = "something else"

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

这等效于:

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

现在,y不引用列表x的第一个元素,但是现在引用字符串“其他”。