Wur*_*bro -1 python reference function list
我想要一个很好的set all list elements to a default value功能.我提出的那个不起作用,但我的第二个解决方案确实如此.任何人都可以告诉我它为什么单向工作而不是另一种方式?
第一解决方案
def set_all(the_list,value): #NOT doing anything
for item in the_list:
item = value
Run Code Online (Sandbox Code Playgroud)
二解决方案:
def set_all(the_list,value): #working as intended
for i,item in enumerate(the_list):
the_list[i] = value
Run Code Online (Sandbox Code Playgroud)
当你这样做时:
for item in the_list:
item = value
Run Code Online (Sandbox Code Playgroud)
您只是将名称 重新分配给其他名称item(value具体而言),但您没有触及列表对原始项目的引用 the_list[i].
因此,您实际上并未触摸列表,因此它不会更改.
你可以这样看:
执行此操作时for item in the_list,您将创建对基础对象的新引用:item.
当你这样做时item = value,你正在改变那个引用并将其指向别的东西.但另一个参考,列表对底层对象的参考,保持不变.
当然,当你这样做时the_list[i],你实际上正在改变列表对象的引用,这就是它工作的原因.