Python Data Structure: Difference between two types of for-loop in python?
我原以为应该继续问这个问题,但不知怎么的我还是找不到(如果有,请在评论栏告诉我,我会删除这篇文章)
我注意到,当我们进行列表替换时,只有当我们按索引遍历列表时,它才起作用。为什么?
1 2 3 4 5 6 7 8 9 10 11 | myList = ['a','b','c','d','e'] for item in myList: if item == 'a': item = 's' print("First loop:",myList) //It prints ['a','b','c','d','e'] for i in range(len(myList)): if myList[i] == 'a': myList[i] = 's' print("Second loop:",myList) //It prints ['s','b','c','d','e'] |
我试过阅读python控制流文档:https://docs.python.org/3/tutorial/control flow.html,但它并没有真正回答我的问题。
在第一个循环中,行
在第一个for循环中,"item"只是一个变量,它被分配给循环必须分配给的列表项。重新分配变量不会影响列表。在第二个循环中,您直接更改列表项,这就是在打印列表时显示列表项的原因。
有关第一个循环不工作的原因的示例,请检查:
1 2 3 4 5 6 | myList = ['a','b','c','d','e'] item = myList[0] item = 's' # this is an example equivalent to what the first loop does # the values in myList remain unchanged |
以及一个与第二个循环等效的例子:
1 2 3 4 | myList = ['a','b','c','d','e'] myList[0] = 's' # the first value in myList is changed to 's' |
在第一个循环的每次迭代中,变量
在第二个循环中,您将重新分配
1 | myList[i] = 's' |
还可以考虑一个简单的例子:
1 2 3 4 | myList = ['a', 'b', 'c'] item = myList[0] # assign item to 'a' item = 's' # re-assign item variable to 's', does not change list myList[0] = 's' # change the content of the first item in the list |
还可以看看这个:python:变量什么时候通过引用传递,什么时候通过值传递?