我只是觉得我已经把它记下来了,因为我已经看过了 – 对这种行为得到确认会很好;我确实看到了
How do I pass a variable by reference?,但我不确定如何在这种情况下解释它.
假设我们有这两个数组/列表:
a = [1, 2, 3, 4]
b = [-1, a, -100, a[2], -1]
口译员最初将其视为:
>>> print(a)
[1, 2, 3, 4]
>>> print(b)
[-1, [1, 2, 3, 4], -100, 3, -1]
现在让我们改变一个[2],看看会发生什么:
>>> print(a)
[1, 2, 55, 4]
>>> print(b)
[-1, [1, 2, 55, 4], -100, 3, -1]
因此,无论列表b是否有对列表a的引用,该值都已更新 – 但是无论b初始化为(对…的引用)列表a中的元素,似乎Python在初始化时扩展了值,因此按值(而不是通过引用)存储元素,因此它的值显然不会更新.
基本上,我找到了一个用例,在那里能够很方便地定义例如b = [-1 a [2] -1],然后更新a [2],并且能够计算在获得(在这种情况下)b的值时将发出[2]的最新值[ 1].有没有办法在Python中做到这一点,而不必做b = [-1 a -1],然后阅读b [1] [2](我想得到a [2]的值只是通过用b [1])?