所以我想这样做:
tuple([1])
我期望的输出是:
(1)
然而,我得到了这个:
(1,)
但如果我这样做:
tuple([1,2])
完美无缺!像这样:
(1,2)
这太奇怪了,我不知道为什么元组函数会导致这个结果。
请帮我解决。
答案 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是一个元组。