元组的项分配

  • 本文关键字:分配 元组 python
  • 更新时间 :
  • 英文 :


我正在尝试更改元组的特定元素的值。这是代码:

y=((2,2),(3,3))
y[1][1]=999
print('y: ',y)
TypeError: 'tuple' object does not support item assignment

我知道Tuples are immutable objects. “Immutable” means you cannot change the values inside a tuple. You can only remove them.,我想知道是否有变通办法?我无法为y创建列表列表,因为我稍后将使用y作为字典中的关键字。

如果您不希望y的修改值指向同一个字典条目,那么您可以转换为列表列表,对其进行修改,然后转换回元组。例如:

d = { ((2,2),(3,3)) : 'old', ((2, 2), (3, 999)) : 'new' }
y = ((2,2),(3,3))
print(d[y])
z = list(list(a) for a in y)
z[1][1] = 999
y = tuple(tuple(a) for a in z)
print(d[y])

输出:

old
new

如果以后需要将元组用作字典的键,解决方法是将其转换为列表,进行更改,然后再次转换为元组。没有办法直接更改这些值。

y=((2,2),(3,3))
y = list(y)
for i in range(len(y)):
y[i] = list(y[i])
y[1][1] = 999
for i in range(len(y)):
y[i] = tuple(y[i])
y = tuple(y)
print('y: ',y)

不能更改元组的值,因为它们是常量。但是,您可以将其转换回要更改的列表。

代码:

x=((2,2),(3,3))
y = list(x)
print(y)
for i in range(len(y)):
y[i] = list(x[i])
y[1][1]=999
print(y)

最新更新