为什么我尝试更改元组时出现错误

问题描述 投票:0回答:7

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

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)
python python-3.x list tuples
7个回答
3
投票

元组不是列表

在列表中,您可以向列表的任何元素写入新值。

在元组中,你不能。

元组的这个属性,“不变性”,使它们能够以不同于列表的方式使用,有时更有效。

也许你最好列个清单?


3
投票

元组是 Python 中的不可变对象,这意味着它们一旦创建就无法修改其内容。如果您尝试通过更改其值或添加或删除元素来修改元组,您将收到 TypeError。

例如,考虑以下代码片段:

my_tuple = (1, 2, 3) 我的元组[0] = 4


3
投票

元组是不可变的,如果你想改变你可以转换为列表然后返回元组:

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

#(1, 'y', 3, 4, 5)

元组是不可变的有序和索引对象集合。两个或多个项目的元组由逗号分隔的表达式列表组成。一个项目的元组(“单例”)可以通过将逗号附加到表达式来形成(表达式本身不会创建元组,因为括号必须可用于表达式的分组)。一个空元组可以由一对空括号组成。

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


2
投票

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

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

1
投票

您不能更改现有的元组。唯一的解决方案是创建一个新的元组实例。

如果可以接受,您可以执行以下操作:

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)

1
投票

因为元组是常量,所以可以用列表代替元组 像这样

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

您可以查看此链接以获取更多信息 https://www.w3schools.com/python/python_tuples.asp


1
投票

你不能在 python 中更改元组中的项目,元组是不可变的。 如果您想在创建变量后更改项目,您可以更好地使用这样的列表:

my_list = [1,2,3,4,5]
my_list[1] = 'y'
print(my_list)
© www.soinside.com 2019 - 2024. All rights reserved.