python - 对不可变对象的引用的 Python 集合
问题描述
python中有没有办法获取引用列表?意思是,当我更改其中一个内部事物时会自动更改的事物集合,而无需引用集合本身。
允许我在示例中展示的内容
# What happens
a = 1
b = 2
L = [a, b]
print(L) # [1, 2]
b = 3
print(L) # [1, 2]
# I would like to have something like
a = 1
b = 2
ra = ref(a)
rb = ref(b)
L = [ra, rb]
print(L) # [1, 2]
b = 3
print(L) # [1, 3]
编辑如果数字在 python 中是可变的,
我的第一个示例将起作用。即,如果重新分配(例如b = 3
:)意味着“改变我们通过标签'b'引用的对象的内存”。
我的第一个示例使用列表的可变元素(例如,如果我构建一个列表列表,然后变异-无需重新分配!-内部列表)。
因此,更具体地说,我的问题是:当集合包含不可变元素时,我们是否有机会发生这种行为?
(特别是我对可调用列表感兴趣)。
解决方案
在打印 L 的新值之前,将值 b 再次存储在 L 中,请找到以下代码:
a = 1
b = 2
L = [a, b]
print(L) # [1, 2]
b = 3
L=[a, b]
print(L) # [1, 3]
但这种方法效率不高。更新List项的方式只有索引。如下:
a = 1
b = 2
L = [a, b]
print(L) # [1, 2]
b = 3
L[1]=b
print(L) # [1, 3]
我们无法像您尝试在 Python 中使用引用那样做到这一点。当您将整数放入列表中时,列表会保存该整数的副本。整数最初是变量、文字值、函数调用的结果还是其他东西都没有关系;当列表看到它时,它只是一个整数值。
推荐阅读
- matlab - 将常量值添加到表中的列 - Matlab
- python - 如何在 discord.py 中获得嵌入的颜色
- html - 如果文本溢出,如何获取用户可见的文本?
- asp.net - 用于 WEB API 调用的 ASP.NET 默认凭据
- sql - 在 SQL 中使用连接操作
- php - 无法将 laravel 应用程序部署到 hostgator 主机中的子域
- python - 将图像、视频转换为字符串格式的最佳方法
- docker - 如何在 docker 容器的新镜像中使用已安装的软件包?
- python - 如何在 Python 中使用 Selenium 在 Myntra 上单击“显示更多”
- reactjs - 如何使用每个选项卡的下拉菜单实现 material-ui 选项卡