首页 > 解决方案 > 为什么元组不会改变而列表会改变?

问题描述

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

我。

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)

标签: python

解决方案


List你使用这个'='赋值运算符时,它不会创建新的引用,它引用同一个对象。

Tuple您使用此“=”赋值运算符时,它会创建新的引用。

参考下面的代码,检查ID的输出。

L1 = [1,2,3,4]
L2 = L1
L2.append(5)
print("L1: ", L1)
print("L2: ", L2)
print("ID of L1: ", id(L1))
print("ID of L2: ", id(L2))
# Output =
# L1:  [1, 2, 3, 4, 5]
# L2:  [1, 2, 3, 4, 5]
# ID of L1:  2598160167616
# ID of L2:  2598160167616
# -------------------------------------------
L1=(1,2,3,4)
L2=L1
L2 += (5,)
print("L1: ", L1)
print("L2: ", L2)
print("ID of L1: ", id(L1))
print("ID of L2: ", id(L2))
# Output =
# L1:  (1, 2, 3, 4)
# L2:  (1, 2, 3, 4, 5)
# ID of L1:  2598161745696
# ID of L2:  2598161718864
# -------------------------------------------

推荐阅读