如何在Python中将单元素列表完美地转换为元组?

时间:2016-04-15 03:04:34

标签: python python-3.x tuples python-3.5

所以我想这样做:

tuple([1])

我期望的输出是:

(1)

然而,我得到了这个:

(1,)

但如果我这样做:

tuple([1,2])

完美无缺!像这样:

(1,2)

这太奇怪了,我不知道为什么元组函数会导致这个结果。

请帮我解决。

7 个答案:

答案 0 :(得分:8)

这是Python Wiki has a page dedicated to it

这个常见问题
  

One Element Tuples

     

单元素元组看起来像:

     

1,

     

这里的基本元素是尾随逗号。至于任何   表达式,括号是可选的,所以你也可以写   像

这样的单元素元组      

(1,)

     

但是定义元组的是逗号,而不是括号。

答案 1 :(得分:2)

这就是在python中形成元组的方式。仅使用(1)评估为1,就像使用(((((((1)))))))评估到((((((1))))))(((((1)))))到... 1一样多。

使用(1,)显式告诉python你想要一个元素的元组

答案 2 :(得分:2)

你得到的是一个元组。当只有一个元素时,它必须用逗号表示,以表明它是一个元组。

Eg)的

>>> a = (1)
>>> type(a)
<type 'int'>
>>> a = (1,)
>>> type(a)
<type 'tuple'>
>>>

原因是,当只有一个元素时不使用逗号时,解释器会将其评估为按paranthesis分组的表达式,从而为a赋值为表达式返回的类型的值< / p>

答案 3 :(得分:1)

来自docs

  

6.2.3。带括号的表格

     

带括号的表单是括在括号中的可选表达式列表:

     

parenth_form ::=  "(" [expression_list] ")" 
带括号的表达式   列表产生表达式列表产生的任何内容:如果列表包含   至少有一个逗号,它产生一个元组;否则,它会产生单一的   构成表达式列表的表达式。

     

一对空括号产生一个空元组对象。以来   元组是不可变的,文字规则适用(即两个   空元组的出现可能会也可能不会产生相同的对象。)

     

请注意,元组不是由括号组成,而是由使用组成   逗号运算符。例外是空元组,为此   括号是必需的 - 允许没有括号的“无”   表达式会导致含糊不清并允许常见的拼写错误传递   未捕获

所以(1,)确实是一个元组

答案 4 :(得分:0)

在分组括号中,

(1)只是1 - 它是一个整数。 (1,)是你想要的1元素元组。

答案 5 :(得分:0)

这是Python中的正常行为。你得到一个元素的元组。符号(1,)只是提醒你有这样一个元组。

答案 6 :(得分:0)

输出(1,)很好。 ,是标记单个元素元组。

如果

a = (1) 

a实际上是一个整数

如果

a = (1, )

然后a是一个元组。