python - 解包集合时内存中会发生什么?

标签 python

list1=[4,8,12]

a,b,c=list1

输出为 a=4,b=8,c=12

我的困惑

教练告诉我们不是a 映射到 4b 映射到 8c12。我没听懂他说的清楚(尽管我反复听了他多次)。他说对象是为 4 创建的,而 a 被映射到 4。但这与我在下图中呈现的有什么区别?

handwritten diagram

最佳答案

您的图片具有误导性的是,它暗示 abc 引用了 list1。但是,如果您更改 list1,您会发现 abc 不受这种变化。

绘制图片的更好方法可能是将 4、8 和 12 与 list1 分开显示:

list1-->[ ][ ][ ]
         |  |  |
         V  V  V
         4  8  12
         ^  ^  ^
         |  |  |
         a  b  c

所有变量都是相互独立的,尽管其中一些变量(例如 list1[0]a)当前指向相同的值。

换句话说:说 a = list1[0] 就是说“评估 list1[0] 并指定 a 引用无论那个值是现在”,这与说“使 a 成为 list1[0] 的别名”不同。

关于python - 解包集合时内存中会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70103531/

相关文章:

python - 通过计算 python 中 groupby 之后的列中 0 出现的次数来获取子集

python - 如何让 CSV 阅读器读取内存文件?

python - 我无法通过 print 和 str.center 获得所需的输出

python - 符合长行以适应 PEP 8

python - 登录或匿名用户的 django 单元测试

python - 使用 For 循环缩短重复代码以递增变量。

python - 通过网络掩码删除重复的 IP 地址

python - 在 Flask 中运行 Fabric 命令会阻止请求

Python:如何在不知道子列表数量的情况下迭代每个子列表的第一个元素?

python - 从任意嵌套列表中随机采样,同时保持结构