python - 为什么变量有时会在 Python 中绑定两个方向?
问题描述
说我有
x = [[0,0]]
y = x[-1]
那为什么
y[1] += 1
给
x = [[0,1]]
y = [0,1]
也就是说,我很困惑为什么它也会改变 x 是什么,即使我只指定了与 y 相关的东西?
解决方案
如果您将列表视为内存中的可变对象并且您认为您正在修改该列表,那么这是有道理的。
对于同一个列表,变量只是不同的名称。
该代码相当于:
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]
在这两种情况下进行修改。
推荐阅读
- git - 无法提交空的 .gitkeep 文件
- python - 在 Python 中通过赋值导入子包
- python - 如何表示RandomForestRegressor的准确性
- c - 正确加载 OpenSSL 的方法顺序?
- python - Python,AttributeError:“NoneType”对象没有“显示”属性
- ios - 为什么初始化这个 swift 对象会产生 2 而不是 1 的 ARC?
- python - Python生成范围内数字的随机排列
- algorithm - 如何找到递归算法的运行时复杂度?
- symfony - Symfony4 Doctrine ODM - 多对多变空
- katalon-studio - Katalon Studio:重试 URL 直到成功