python-3.x 为什么在尝试更改元组时会出现错误

oxcyiej7  于 2023-03-09  发布在  Python
关注(0)|答案(6)|浏览(218)

我尝试更改元组,但它一直给我这个错误:

Traceback (most recent call last):
  File "main.py", line 2, in <module>
    my_tuple[1] = 'y'
TypeError: 'tuple' object does not support item assignment

我的代码是:

my_tuple = (1,2,3,4,5)
my_tuple[1] = 'y'
print(my_tuple)
epfja78i

epfja78i1#

元组是不可变的,如果您想更改,可以先转换为列表,然后再转换回元组:

my_tuple = (1,2,3,4,5)
l=list(my_tuple)
l[1]='y'
my_tuple=tuple(l)

#(1, 'y', 3, 4, 5)
  • 元组是对象的不可变有序索引集合。两个或多个项的元组由逗号分隔的表达式列表构成。一个项的元组(“singleton”)可以通过在表达式后附加逗号来构成(表达式本身不会创建元组,因为括号必须可用于表达式分组)。空元组可以由一对空括号构成。*

https://python-reference.readthedocs.io/en/latest/docs/tuple/

bnl4lu3b

bnl4lu3b2#

元组不是列表

在列表中,可以向列表的任何元素写入新值。
在元组中,你不能。
元组的这个属性,“不变性”,使它们能够以不同于列表的方式使用,有时更有效。
也许你最好列个清单

z2acfund

z2acfund3#

元组虽然比列表快,但不能被修改。2将它转换回列表,修改并设置回元组会更方便。

my_list=list(my_tuple)
my_list[1]='y'
my_tuple=tuple(my_list)
e0bqpujr

e0bqpujr4#

不能更改现有的元组。唯一的解决方案是创建新的元组示例。
如果可以接受,您可以执行以下操作:

my_tuple = (1,2,3,4,5)
my_tuple = tuple('y' if i == 1 else x for i,x in enumerate(my_tuple))
print(my_tuple)
kqqjbcuj

kqqjbcuj5#

因为元组是常量,所以可以使用list代替元组,如下所示

my_tuple = [1,2,3,4,5]
my_tuple[1] = 'y'
print(my_tuple)

你可以检查此链接以获得更多信息https://www.w3schools.com/python/python_tuples.asp

yks3o0rb

yks3o0rb6#

在python中你不能改变元组中的项,元组是不可变的。如果你想在你做了变量之后改变一个项,你可以更好地使用这样的列表:

my_list = [1,2,3,4,5]
my_list[1] = 'y'
print(my_list)

相关问题