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

d8tt03nd  于 2021-06-18  发布在  Mysql
关注(0)|答案(4)|浏览(263)

在下面的例子中,我希望所有的元素都是元组,为什么元组只包含一个字符串,却要转换成一个字符串?

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

oknwwptz1#

当我看到这个页面时,我很惊讶为什么没有人提到一个非常常见的方法来处理只有一个元素的元组。可能这是版本的事情,因为这是一个非常古老的职位。不管怎样,这就是:

>>> b = tuple(('a'))
>>> type(b)
<class 'tuple'>
bjg7j2ky

bjg7j2ky2#

('a') 不是元组,只是字符串。
你需要在结尾加一个逗号,这样才能使 python 把它们当作 tuple : -

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

8xiog9wr3#

前两个例子不是元组,而是字符串。单个项元组需要一个尾随逗号,如下所示:

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

nwlls2ji4#

因为前两个元素不是元组;它们只是线。括号不会自动使它们成为元组。必须在字符串后面添加逗号,以向python指示它应该是元组。

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

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

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

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

             ^       ^

从python文档:
一个特殊的问题是包含0或1项的元组的构造:语法有一些额外的怪癖来适应这些。空元组由一对空括号构成;只有一个项的元组是通过在值后面加逗号来构造的(仅将单个值括在括号中是不够的)。丑陋,但有效。
如果你真的讨厌后面的逗号语法,一个解决方法是传递一个 listtuple() 功能:

x = tuple(['a'])

相关问题