Python - 更新元组


在Python中,元组是一种不可变的数据类型。不可变对象一旦在内存中创建就无法修改。

实施例1

如果我们尝试使用切片运算符为元组项分配新值,Python 会引发 TypeError。请参阅以下示例 -

tup1 = ("a", "b", "c", "d")
tup1[2] = 'Z'
print ("tup1: ", tup1)

它将产生以下输出-

Traceback (most recent call last):
 File "C:\Users\mlath\examples\main.py", line 2, in <module>
  tup1[2] = 'Z'
  ~~~~^^^
TypeError: 'tuple' object does not support item assignment

因此,不可能更新元组。因此,元组类不提供像列表类那样从元组对象中添加、插入、删除、排序项目的方法。

如何更新 Python 元组?

您可以使用解决方法来更新元组。使用 list() 函数,将元组转换为列表,执行所需的追加/插入/删除操作,然后将列表解析回元组对象。

实施例2

在这里,我们将元组转换为列表,更新现有项目,追加新项目并对列表进行排序。该列表被转换回元组。

tup1 = ("a", "b", "c", "d")
print ("Tuple before update", tup1, "id(): ", id(tup1))

list1 = list(tup1)
list1[2]='F'
list1.append('Z')
list1.sort()
print ("updated list", list1)

tup1 = tuple(list1)
print ("Tuple after update", tup1, "id(): ", id(tup1))

它将产生以下输出-

Tuple before update ('a', 'b', 'c', 'd') id(): 2295023084192
updated list ['F', 'Z', 'a', 'b', 'd']
Tuple after update ('F', 'Z', 'a', 'b', 'd') id(): 2295021518128

但请注意,更新前和更新后tup1的id()是不同的。这意味着创建了一个新的元组对象,并且原始元组对象没有就地修改。