【发布时间】:2021-03-29 16:31:22
【问题描述】:
我写了 2 个函数来尝试理解不可变和可变之间的区别,其中一个函数有一个分配给列表的变量,另一个分配给一个元组。在运行第一个函数(在列表的情况下)之后,它会打印 x 的更新值,但这不应该发生在元组中,因为元组是不可变的,对吧?为什么他们都打印更新的x。
列表
x = [1, 2, 3, 1, 2, 3]
def changeThem(x,y,z):
return [z if i == y else i for i in x]
print(changeThem(x, 2, 'zzz'))
元组
x = ("apple", "banana", "cherry")
def changeThem(x,y,z):
return [z if i == y else i for i in x]
print(changeThem(x, "apple", 'zzz'))
【问题讨论】:
-
它不改变元组,它返回一个新的列表。
-
在这两种情况下,您都会返回一个新列表;在这两种情况下,输入都不会发生变化,即使列表可能会发生变化,而且
x碰巧是哪种可迭代的并不重要。 -
你没有改变任何对象在任何一种情况下
-
如何更改我的代码以使其不返回新列表而不是更新它?@jonrsharpe
标签: python