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

2024-10-01 02:37:35 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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循环”吗?尽管上面的第一个循环的语法非常相似?你知道吗

第二,有人能解释一下为什么会这样吗?当我尝试使用除键/字典进程之外的列表时,是否应该坚持常规的第一个循环?你知道吗

我读过可能重复的问题,它回答了我的问题,每当我需要修改列表中的项目时,我需要循环索引,不过,我还是想知道,在循环索引的循环和循环列表元素的循环之间,是否有任何语言上的描述,就像在我的第二个循环中一样。


Tags: in信息列表forlenhererangeam
1条回答
网友
1楼 · 发布于 2024-10-01 02:37:35

第二个回路:

for word in listOfStringsCopy:
    word = "something else"

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

这相当于:

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

现在,y不是指列表x的第一个元素,而是指字符串“something other”。你知道吗

相关问题 更多 >