我的代码:
locs = [ [1], [2] ] for loc in locs: loc = [] print locs # prints => [ [1], [2] ]
为什么loc不引用元素locs?
loc
locs
Python:除非明确复制,否则所有内容都将作为参考传递[这不是True吗?]
请说明.. python如何确定 引用和复制 ?
更新:
怎么做 ?
def compute(ob): if isinstance(ob,list): return process_list(ob) if isinstance(ob,dict): return process_dict(ob) for loc in locs: loc = compute(loc) # What to change here to make loc a reference of actual locs iteration ?
enumerate
Python中的所有内容都是通过值传递和分配的,与Java中的所有值都传递和分配的方式相同。Python中的每个值都是对对象的引用(指针)。对象不能是值。分配总是复制值(它是一个指针);因此,两个这样的指针可以指向同一对象。除非您要进行明确的复制操作,否则绝不会复制对象。
对于您的情况,循环的每次迭代都会将列表的元素分配给变量loc。然后,您为变量分配其他内容loc。所有这些值都是指针;您正在分配指针;但您不会以任何方式影响任何对象。