将列表传递给不同的变量.

尝试将内容从一个列表传递给另一个列表时发生: list = [1,2,3] List1 = list 打印列表1 [1,2,3] list.append(7) 打印列表1 [1,2,3,7] 什么是将数据传递到列表中而不是指针中的最简单方法, 另一个变量

# 回答1

usdy@domain.invalid写道: 上面显示的两种方法都将(浅)副本的原始列表副本. 彼得
# 回答2

彼得·奥滕写道: 不要将列表用作名称. 它隐藏了内置列表类. [1,2,3] 上面显示的两种方法都将(浅)副本的原始列表副本. 彼得 谢谢,这很好,但我正在使用2D列表... 我不明白为什么会发生这种情况 d = [[1,2,3],[1,2,3],[1,2,3],[1,2,3]] d [[1,2,3],[1,2,3],[1,2,3],[1,2,3]] F =列表(D) F [[1,2,3],[1,2,3],[1,2,3],[1,2,3]] D [0] [0] =" A" d [['a',2,3],[1,2,3],[1,2,3],[1,2,3]] F [['a',2,3],[1,2,3],[1,2,3],[1,2,3]] 这到底在做什么? 我该如何停止它?
# 回答3

罗比写道: 当您复制外部列表时,D和F共享相同的项目,例如. G. D [0]和F [0]参考同一项目(其中包含1,2,3的列表 案子). 这就是称为"浅"副本. 为了避免这种分享,您需要 不仅复制外部列表,而且还要递归其包含的数据. 这称为"深"副本,可以使用复制模块来完成: 一个警告:我从未在代码中使用过此模块,并认为它 用法是您应用程序中设计错误的有力指示. (的 当然,我不能确定您不知道您实际尝试实现的目标.) 彼得
# 回答4

在2004-05-02,usdey@domain.invalid 写道: 尝试List1 = List [:]而不是. 这创建了一个副本. D.
# 回答5

罗比写道:谢谢,这很好,但是我正在使用2D列表...我不明白为什么会发生d = [[1,2,3],[1,2,3],[1,2,[1,2, 3],[1,2,3]] d [[1,2,3],[1,2,3],[1,2,3],[1,2,3]] f = list(D )f [[1,2,3],[1,2,3],[1,2,3],[1,2,3]] d [0] [0] [0] =" a" d ['[' a',2,3],[1,2,3],[1,2,3],[1,2,3]] f [['a',2,3],[1,2,3 ],[1,2,3],[1,2,3]]这到底在做什么? 我该如何停止它? 这就是为什么彼得警告说列表()构造函数产生浅 复制. IS运算符和ID()函数将揭示D [0] [0] F [0] [0]是同一列表. 您需要copy.deepcopy()函数.

标签: python

添加新评论