繁体   English   中英

LIST和TUPLE赋值操作

[英]LIST and TUPLE assignment operation

为什么在示例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]

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)

a = b使得a指代相同的对象作为b 但是元组是不可变的,所以+=创建一个新的元组,保持原始元素不变。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM