Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中将一个元素列表完美地转换为元组?_Python_Python 3.x_Tuples_Python 3.5 - Fatal编程技术网

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

如何在Python中将一个元素列表完美地转换为元组?,python,python-3.x,tuples,python-3.5,Python,Python 3.x,Tuples,Python 3.5,所以我试着这样做: tuple([1]) 我期望的结果是: (1) 然而,我得到了这个: (1,) 但如果我这样做: tuple([1,2]) 它工作得很好!像这样: (1,2) 这太奇怪了,我不知道为什么tuple函数会导致这个结果 请帮我把它修好。(1)只是分组括号中的1,它是一个整数(1,)是您想要的单元素元组。这是Python中的正常行为。得到一个只有一个元素的元组。符号(1,)只是提醒您有这样一个元组。这就是python中元组的形成方式。只使用(1)计算结果为1,就像使用((

所以我试着这样做:

tuple([1])
我期望的结果是:

(1)
然而,我得到了这个:

(1,)
但如果我这样做:

tuple([1,2])
它工作得很好!像这样:

(1,2)
这太奇怪了,我不知道为什么tuple函数会导致这个结果


请帮我把它修好。

(1)
只是分组括号中的
1
,它是一个整数
(1,)
是您想要的单元素元组。

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

这就是python中元组的形成方式。只使用
(1)
计算结果为1,就像使用
((((((((((((((1))的)())
计算结果为
((((((1))的)()))
计算结果为
(((((((1))的)())
一样。。。一,


使用
(1,)
明确地告诉python您需要一个元素的元组您得到的是一个元组。当只有一个元素时,必须用逗号表示它,以显示它是一个元组

(例如)

>a=(1)
>>>类型(a)
>>>a=(1,)
>>>类型(a)
>>>
原因是,当只有一个元素时,如果不使用逗号,解释器会将其作为一个按参数分组的表达式进行计算,从而为
a
分配一个表达式返回的类型值,输出(1,)就可以了。最简单的方法是标记单个元素元组

如果

a实际上是一个整数

如果


然后a是一个元组。

这是一个非常常见的问题:

单元素元组

单元素元组如下所示:

1,

这里的基本元素是后面的逗号。至于任何 表达式,括号是可选的,因此您也可以编写 一元元组

(1,)

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

6.2.3. 括号表达式 带括号的形式是一个包含在括号中的可选表达式列表:

父形式::=“(“[表达式列表]”)带括号的表达式 列表产生表达式列表产生的任何结果:如果列表包含 至少一个逗号,它产生一个元组;否则,它将生成单个 构成表达式列表的表达式

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

请注意,元组不是由括号组成的,而是通过使用 逗号运算符的。例外情况是空元组,对于 括号是必需的-允许在 表达式会导致歧义,并允许常见的拼写错误通过 未破坏的


所以
(1,)
实际上是一个元组,
(1)
的类型是整数;虽然
(1,)
是元组,但(1,)看起来并不完美。但事实上,元组只包含一个元素,所以(1,)看起来并不完美。但实际上它是一个只包含一个元素的元组?@MarsLee实际上,
1,
是一个只包含一个元素的元组
(1,)
只是一个很好的版本:)你自己试试:
对于1,2,3中的i,:print i
-元组是
1,2,3,
,在它周围加上括号只会让词法器很容易意识到它是一个元组,而不会把它与其他东西混淆。我完全明白了。非常感谢您的帮助。:)
>>> a = (1)
>>> type(a)
<type 'int'>
>>> a = (1,)
>>> type(a)
<type 'tuple'>
>>>
a = (1) 
a = (1, )
parenth_form ::= "(" [expression_list] ")"