在下面的例子中,我希望所有的元素都是元组,为什么一个元组只包含一个字符串,而它却被转换成了一个字符串呢?
>>> a = [('a'), ('b'), ('c', 'd')] >>> a ['a', 'b', ('c', 'd')] >>> >>> for elem in a: ... print type(elem) ... <type 'str'> <type 'str'> <type 'tuple'>
前两个例子不是元组,它们是字符串:
>>> a = [('a',), ('b',), ('c', 'd')] >>> a [('a',), ('b',), ('c', 'd')]
当元组只包含一个字符串时,为什么要转换成字符串呢? a = [('a'), ('b'), ('c', 'd')]
当元组只包含一个字符串时,为什么要转换成字符串呢?
a = [('a'), ('b'), ('c', 'd')]
因为前两个元素不是元组,它们只是字符串。括号不会自动使它们成为元组。您必须在字符串后面添加一个逗号,以指示 python 应该是一个 tuple。
>>> type( ('a') ) <type 'str'> >>> type( ('a',) ) <type 'tuple'>
要修复示例代码,请在此处添加逗号:
>>> a = [('a',), ('b',), ('c', 'd')] ^ ^
来自 巨蟒文档:
一个特殊的问题是包含0或1个项的元组的构造: 语法有一些额外的特点来适应这些特点。空元组由一对空括号构成; 带有一个项的元组由一个带逗号的值构成(在括号中包含单个值是不够的)。丑陋,但很有效。
如果你真的很讨厌后面的逗号语法,一个解决办法就是把 list传递给 tuple()函数:
list
tuple()
x = tuple(['a'])
('a')不是元组,而只是一个字符串。
('a')
你需要在结尾多加一个逗号,让 python把它们当作 tuple:-
python
tuple
>>> a = [('a',), ('b',), ('c', 'd')] >>> a [('a',), ('b',), ('c', 'd')] >>>
看到这个页面时,我很惊讶为什么没有人提到一个非常常见的用于单元素元组的方法。这可能是版本的东西,因为这是一个非常老的职位。不管怎么说:
>>> b = tuple(('a')) >>> type(b) <class 'tuple'>