gpt4 book ai didi

Python 不可变引用集合

转载 作者:行者123 更新时间:2023-12-01 07:16:23 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com