为什么元组只有单个元素时加逗号结尾?

2019-06-01  14:36:34

用交互式输入:

>>> yz=(1)
>>> yz
1
>>> yz1=(1,)
>>> yz1
(1,)

发现没有以逗号结尾也可以创建并输出不过前者输出是整数1,后者输出是元组(1,)。难道前者没有创建一个元组吗?我们来检查上面两个“元组”得到类型:

>>> type(yz)
<class 'int'>
>>> type(yz1)
<class 'tuple'>

这回我们发现前者yz只是一个整型变量,而后者yz1才是一个元组。这是因为符号()是一个运算符,当括号中只有数字时并不会创建一个元组。而且元组之间可以进行加法运算(仅此而且)如

>>> yz=(1)
>>> yz1=(1,)
>>> yz2=(1,2)
>>> yz+yz2
Traceback (most recent call last):
  File "<pyshell#89>", line 1, in <module>
    yz+yz2
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'
>>> yz1+yz2
(1, 1, 2)

从错误类型中我们也可以看出yz是一个整型数据。

所以说创建的元组中只有一个元素时没有加逗号就无法创建为元组,而为其他变量,如:

>>> x=([1])
>>> type(x)
<class 'list'>
>>> y=([1],)
>>> type(y)
<class 'tuple'>
>>> type(y[0])
<class 'list'>
>>> z=({'man':'men'})
>>> z
{'man': 'men'}
>>> type(z)
<class 'dict'>
>>> z=({'man':'men'},)
>>> type(z)
<class 'tuple'>
>>> z
({'man': 'men'},)
>>> z[0]
{'man': 'men'}
>>> z[0][0]
Traceback (most recent call last):
  File "<pyshell#116>", line 1, in <module>
    z[0][0]
KeyError: 0
>>> z[0]['man']
'men'
>>> type(z['man'])
<class 'str'>
>>> z['man']
men
原文地址:https://www.cnblogs.com/shuxincheng/p/10959546.html