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'改变我们要引用的对象的内存”。

我的第一个示例使用列表的可变元素(例如,如果我构建列表列表,然后对内部列表进行mutate-而无需重新分配!)。

因此,更具体地说,我的问题是:当集合包含不可变元素时,我们是否有机会发生这种行为?

(特别是我对可调用列表感兴趣)。

最佳答案

在打印新的L值之前,将值b再次存储在L中,请找到以下代码:

a = 1
b = 2
L = [a, b]
print(L) # [1, 2]
b = 3
L=[a, b]
print(L) # [1, 3]


但是这种方法效率不高。仅通过索引更新列表项的方法如下:

a = 1
b = 2
L = [a, b]
print(L) # [1, 2]
b = 3
L[1]=b
print(L) # [1, 3]


我们无法像您尝试在Python中使用引用那样进行操作。
当您将整数放入列表中时,列表将保存该整数的副本。整数最初是变量,文字值,函数调用的结果还是其他无关紧要;当列表看到它时,它只是一个整数值。

10-04 15:59
查看更多