首页 文章

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

提问于
浏览
64

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

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

3 回答

  • 80

    因为前两个元素不是元组;他们只是字符串 . 括号不会自动使它们成为元组 . 你必须在字符串后面添加一个逗号来向python表明它应该是一个元组 .

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

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

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

    来自Python Docs

    一个特殊的问题是构造包含0或1项的元组:语法有一些额外的怪癖来适应这些 . 空元组由一对空括号构成;通过使用逗号跟随值来构造具有一个项目的元组(仅在括号中包含单个值是不够的) . 丑陋但有效 .

  • 7

    你的前两个例子不是元组,它们是字符串 . 单项元组需要尾随逗号,如下所示:

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

    ('a') 不是元组,只是一个字符串 .

    你需要在最后添加一个额外的逗号以使 python 将它们视为 tuple : -

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

相关问题