如何创build只有一个元素的元组

在下面的例子中,我期望所有的元素都是元组,为什么元组只有一个string时才转换为string?

>>> a = [('a'), ('b'), ('c', 'd')] >>> a ['a', 'b', ('c', 'd')] >>> >>> for elem in a: ... print type(elem) ... <type 'str'> <type 'str'> <type 'tuple'> 

因为前两个元素不是元组; 他们只是string。 括号不会自动使它们成为元组。 你必须在string之后加一个逗号来表示它应该是一个元组。

 >>> type( ('a') ) <type 'str'> >>> type( ('a',) ) <type 'tuple'> 

要修正您的示例代码,请在此处添加逗号:

 >>> a = [('a',), ('b',), ('c', 'd')] ^ 

从Python文档 :

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

你的前两个例子不是元组,它们是string。 单项元组需要一个尾随逗号,如下所示:

 >>> a = [('a',), ('b',), ('c', 'd')] >>> a [('a',), ('b',), ('c', 'd')] 

('a')不是一个元组,而只是一个string。

你需要在最后添加一个额外的逗号使python把它们作为tuple

 >>> a = [('a',), ('b',), ('c', 'd')] >>> a [('a',), ('b',), ('c', 'd')] >>>