它复制一份清单吗?但在代码中我正在查看我不理解的x = x[:]
。如何将两个副本称为同一个东西?
答案 0 :(得分:6)
首先评估权限,将其置于临时变量中,并将x重新分配给临时变量。当然,你永远不会看到它。
答案 1 :(得分:2)
回答你的问题“[:]如何在python中运行?”在这个特定的表达式本身的上下文中有点棘手
x = x[:]
这不太可能发生,因为它真的像是在说a = a
。
您更有可能看到类似
的内容a = x[:]
用简单的单词复制x
引用的列表,并将其分配给a
。
如果你只是做了
a = x
两个变量都指向同一个位置,任何一个变量的任何变化都会反映在两者中。
如果您不使用冒号表示法,例如a = x
:
In [31]: x = range(5)
In [32]: a = x
In [33]: a
Out[33]: [0, 1, 2, 3, 4]
In [34]: x
Out[34]: [0, 1, 2, 3, 4]
In [35]: a[3] = 99 # I am making a change in a
In [36]: a
Out[36]: [0, 1, 2, 99, 4]
In [37]: x
Out[37]: [0, 1, 2, 99, 4] # but x changes too!
将此与a = x[:]
In [38]: x = range(5)
In [39]: a = x[:]
In [40]: a
Out[40]: [0, 1, 2, 3, 4]
In [41]: x
Out[41]: [0, 1, 2, 3, 4]
In [42]: a[3] = -99
In [43]: a
Out[43]: [0, 1, 2, -99, 4] # a changes
In [44]: x
Out[44]: [0, 1, 2, 3, 4] # x does not change
注意:@gnibbler提供了一个简短而完整的示例(如下所示)
评论)您可能会遇到x = x[:]
并在此上下文中
该任务将起到一个有用的作用(虽然我们不知道你最初遇到的这种情况)。