Python列表扩展获取类型错误

Python列表扩展获取类型错误,python,list,Python,List,我已经使用Python有一段时间了(几周)。前几天我遇到了一个奇怪的错误,不知道为什么。有什么想法吗 >>t1=[1,2] >>>t2=(3,4) >>>t1.延伸(t2) >>>t1 [1, 2, 3, 4] >>>t3=(5) >>>t1.扩建(t3) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 TypeError:“int”对象不可编辑 正如错误消息所说,t3不是元组或列表,它只是一个整数 要使用单个项初始化元组,请在后面添加逗号: >>类型((5)) >>>类型((5,)) >

我已经使用Python有一段时间了(几周)。前几天我遇到了一个奇怪的错误,不知道为什么。有什么想法吗

>>t1=[1,2]
>>>t2=(3,4)
>>>t1.延伸(t2)
>>>t1
[1, 2, 3, 4]
>>>t3=(5)
>>>t1.扩建(t3)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:“int”对象不可编辑

正如错误消息所说,
t3
不是元组或列表,它只是一个整数

要使用单个项初始化元组,请在后面添加逗号:

>>类型((5))
>>>类型((5,))
>>>
您正在键入以使用单个元素创建
tuple
,但是您在python中创建了一个
int
对象。你得到的例外情况清楚地表明了这一点

见链接

括号不会自动使它们成为元组。必须在int之后添加逗号,以向python指示它应该是元组

一个特殊的问题是包含0或1项的元组的构造:语法有一些额外的怪癖来适应这些。空元组由一对空括号构成;带有一个项的元组是通过在值后面加逗号来构造的(仅将单个值括在括号中是不够的)。丑陋,但有效


试试看:
t3=(5,)
谢谢,这个链接帮助很大。但是我仍然想知道为什么
(5)
应该被解释为
5
。为什么采用这种设计?括号用于定义表达式中的运算符优先级,因此Python将表达式
(5)
计算为整数5。为了将其与单元素元组区分开来,Python必须使用一些其他语法来避免歧义,并且它选择了尾随逗号,如:
(5,)
。元组很棒,但在我看来,这很难看也很遗憾。是的,这有点难看。尽管如此,现在我更明白了。谢谢你的帮助!有趣的是,以下内容也是有效的:
t1=5、
t2=tuple([5])
。后者至少让你的意图非常清楚。
TypeError: 'int' object is not iterable
t3 = (5) # This creates an int object with value 5 in Python
t3 = (5,) # Right way to create a tuple with single element.