为什么在下面的示例中,当我设置names = []
时,元组t
不会更改,但是当我向names
列表中添加新值时,变化反映出来?列表到元组中 - 修改列表反映在元组中,但清空列表不会在元组中改变
它看起来像tuple
最初引用列表,所以任何变化反映在元组对象,但清空它看起来像一个新的副本。
>>> names = ['Mark','Hary']
>>> t = (names,'Lauri')
>>> t
(['Mark', 'Hary'], 'Lauri')
>>> names.append('Donna')
>>> names
['Mark', 'Hary', 'Donna']
>>> t
(['Mark', 'Hary', 'Donna'], 'Lauri')
>>> names = []
>>> names
[]
>>> t
(['Mark', 'Hary', 'Donna'], 'Lauri')
来看,它通过[pythontutor] (http://pythontutor.com/visualize.html#code=names%20%3D%20%5B'Mark','Hary'%5D%0At%20%3D%20(names,'Lauri'%29% 0Aprint(T%29%0Anames.append( '唐娜' %29%0Aprint(名称%29%0Aprint(T%29%0Anames%20%3D%20%5B%5D%0Aprint(名称%29%0Aprint(T% 29累积=假heapPrimitives =假模式=编辑&原点=停用frontend.js&PY = 3&rawInputLstJSON =%5B%5D& textReferences = false))对于可视化这种事情非常有用。 –
dang it,为什么我永远不能得到pythontutor链接来正确显示...... :( –