[:]如何在python中工作?

时间:2012-04-22 23:49:17

标签: python copy

它复制一份清单吗?但在代码中我正在查看我不理解的x = x[:]。如何将两个副本称为同一个东西?

2 个答案:

答案 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[:]并在此上下文中 该任务将起到一个有用的作用(虽然我们不知道你最初遇到的这种情况)。