【发布时间】:2020-01-22 02:41:05
【问题描述】:
我使用 Python 已经有一段时间了(几周)。前几天我遇到了这个奇怪的错误,不知道为什么。有什么想法吗?
>>> t1 = [1, 2]
>>> t2 = (3, 4)
>>> t1.extend(t2)
>>> t1
[1, 2, 3, 4]
>>> t3 = (5)
>>> t1.extend(t3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
【问题讨论】:
-
试试:
t3 = (5,)看看stackoverflow.com/questions/12876177/… -
谢谢,这个链接帮了很多忙。但我仍然想知道为什么
(5)应该被解释为5。为什么要这样设计? -
括号用于定义表达式中的运算符优先级,因此 Python 将表达式
(5)评估为整数 5。为了将其与单个元素元组区分开来,Python 必须使用一些其他语法来避免歧义,它选择了尾随逗号,如下所示:(5,)。元组很棒,但在我看来,这既丑陋又令人遗憾。 -
是的,这有点丑。尽管如此,现在我对它的理解要好得多。感谢您的帮助!
-
有趣的是,以下也是有效的:
t1 = 5,和t2 = tuple([5])。后者至少让你的意图很明确。