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 中的数字是可变的,我的第一个示例将会工作。 IE。如果重新分配(例如: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 中使用引用那样来做到这一点。 当您将整数放入列表时,列表将保存该整数的副本。整数最初是变量、文字值、函数调用的结果还是其他东西并不重要;当列表看到它时,它只是一个整数值。
关于Python 不可变引用集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57923735/