【发布时间】:2019-09-13 12:32:54
【问题描述】:
有没有办法在 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'引用的对象的内存”。
我的第一个示例使用列表的可变元素(例如,如果我构建一个列表列表,然后变异 - 无需重新分配! - 内部列表)。
因此,更具体地说,我的问题是:当集合包含不可变元素时,我们是否有机会发生这种行为?
(特别是我对可调用列表感兴趣)。
【问题讨论】:
-
您基本上回答了您自己的问题 - Python 已经通过引用引用了每个对象。问题是当您重新分配不可变对象的对象引用,或者只是没有使用可变对象的可用方法时。当您处理不可变元素的集合时,您应该直接使用集合本身。
-
您可能也会对此感兴趣:stackoverflow.com/questions/44935204/…