如何在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] ")"