首页 > 解决方案 > 为什么变量有时会在 Python 中绑定两个方向?

问题描述

说我有

    x = [[0,0]]
    y = x[-1]

那为什么

    y[1] += 1

    x = [[0,1]]
    y = [0,1] 

也就是说,我很困惑为什么它也会改变 x 是什么,即使我只指定了与 y 相关的东西?

标签: pythonpython-3.xvariablesbinding

解决方案


如果您将列表视为内存中的可变对象并且您认为您正在修改该列表,那么这是有道理的。

对于同一个列表,变量只是不同的名称。

该代码相当于:

list_obj = [0, 0]
x = [ list_obj ]    # a list with list_obj as
                    # its single element
y = list_obj        # same as x[-1], just
                    # another name for list_obj

那么很自然,你只是list_obj[1]在这两种情况下进行修改。


推荐阅读