LIST 和 TUPLE 赋值操作

问题描述 投票:0回答:3

为什么示例 II 中只有元组发生变化,而示例 I 中两个列表都发生变化?请考虑这两个程序及其各自的输出(I 和 II)。

L1 = [1,2,3,4]
L2 = L1
L2.append(5)
print("L1: ", L1)
print("L2: ", L2)

输出: L1:[1,2,3,4,5] L2:[1,2,3,4,5]

II.

L1=(1,2,3,4)
L2=L1
L2 += (5,)
print("L1: ", L1)
print("L2: ", L2)

输出: L1:(1,2,3,4) L2:(1,2,3,4,5)

python python-3.x list tuples
3个回答
4
投票

a = b
使
a
b
引用相同的对象。但元组是不可变的,因此
+=
创建一个 new 元组,保持原始元组不变。


2
投票

在第一个示例中,L1 和 L2 都指向存储的数据,因此如果您更改 L1 或 L2 中的任何一个,数据就会更改,并且通过调用(不确定正确的表达式)L1 或 L2 中的任何一个,新更改的数据将被显示。这个解释对于列表来说是正确的。列表是可变的。 在第二个示例中,您使用的是“不可变”的元组。当你想要改变一个不可变的元组时,Python会自动创建一个新的元组。这意味着当你将 5 添加到元组 L2 时,实际上 5 并不等于原始元组,Python 会创建一个名为 L2 的新元组,并将新数据 (5) 添加到其中,而原始数据 (L1) 保留不变。这就是为什么 L1 没有改变但 L2 改变了。


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.