【问题标题】:Python Lists - different results for L1+=[5] and L1 = L1+[5] [duplicate]Python列表-L1 + = [5]和L1 = L1 + [5]的不同结果[重复]
【发布时间】:2014-05-20 04:15:10
【问题描述】:

我已经了解了列表的可变性,并试图了解它是如何工作的。 然而,我发现了一些新的东西:

x = [1, 2, 3]
y = x
print x # [1, 2, 3]
y += [3, 2, 1]
print x # [1, 2, 3, 3, 2, 1]

一切正常

但是,如果我将 y += [3,2,1] 替换为 y = y + [3,2,1],我会得到以下结果:

x = [1, 2, 3]
y = x
print x # [1, 2, 3]
y = y+ [3, 2, 1]
print x # [1, 2, 3]

这不是我所期望的。谁能告诉我 y+= 如何给出不同的结果?

【问题讨论】:

    标签: python list


    【解决方案1】:

    当你这样做时:

    y = y+ [3, 2, 1] 
    

    您正在使用新引用创建一个新列表 y,这不会影响旧列表。

    【讨论】:

      【解决方案2】:

      以前有人回答过,但长话短说:

      x = x + y 意味着基本上将x+y 分配给x(所以x 引用了一个新对象)

      x += y 表示将y 添加到x(所以x 仍然引用同一个对象)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-13
        • 2010-11-09
        • 2017-08-26
        • 1970-01-01
        • 1970-01-01
        • 2014-12-02
        • 2011-03-27
        • 2021-07-27
        相关资源
        最近更新 更多