您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python清单([])和[]

Python清单([])和[]

list(chain)返回的浅表副本chain,它等效于chain[:]

如果您想要列表的浅表副本,请使用list(),它有时还用于从迭代器获取所有值。

y = list(x)和之间的区别y = x

>>> x = [1,2,3]
>>> y = x         #this simply creates a new referece to the same list object
>>> y is x
True
>>> y.append(4)  # appending to y, will affect x as well
>>> x,y
([1, 2, 3, 4], [1, 2, 3, 4])   #both are changed

#shallow copy   
>>> x = [1,2,3] 
>>> y = list(x)                #y is a shallow copy of x
>>> x is y     
False
>>> y.append(4)                #appending to y won't affect x and vice-versa
>>> x,y
([1, 2, 3], [1, 2, 3, 4])      #x is still same

请注意,如果x包含可变对象,则仅list()[:]不足:

>>> x = [[1,2],[3,4]]
>>> y = list(x)         #outer list is different
>>> x is y          
False

但是内部对象仍然是x中对象的引用:

>>> x[0] is y[0], x[1] is y[1]  
(True, True)
>>> y[0].append('foo')     #modify an inner list
>>> x,y                    #changes can be seen in both lists
([[1, 2, 'foo'], [3, 4]], [[1, 2, 'foo'], [3, 4]])

由于外部列表不同,因此修改x不会影响y,反之亦然

>>> x.append('bar')
>>> x,y
([[1, 2, 'foo'], [3, 4], 'bar'], [[1, 2, 'foo'], [3, 4]])

为了处理这个使用copy.deepcopy

python 2022/1/1 18:28:38 有186人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶