构造包含一个元素的元组规则解析

来源:互联网 发布:ise12.3软件下载 编辑:程序博客网 时间:2024/06/05 07:18
构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
tup1 = () # 空元组tup2 = (20,) # 一个元素,需要在元素后添加逗号
解析:如果不明白这在说什么,我们先看以下代码:
#先看列表
a=[]
b=[1]
c=[1,]
d=[1,2]
print(a,b,c,d)
print(type(a),type(b),type(c),type(d))
显示:
[] [1] [1] [1, 2]
<class 'list'> <class 'list'> <class 'list'> <class 'list'>

#再看元组
a=()
b=(1)
c=(1,)
d=(1,2)
print(a,b,c,d)
print(type(a),type(b),type(c),type(d))
显示:
() 1 (1,) (1, 2)
<class 'tuple'> <class 'int'> <class 'tuple'> <class 'tuple'>
从列表我们可以看出来,不管你怎么赋值,abcd的类型都是list,并且赋值时[1]和[1,]的效果是一样的,显示的结果都是[1].
然而元组和列表不同,b显示1,且b的类型为int,并不是tuple.
那么为什么会出现这样的问题呢?我们可以看这条语句b=(1),大家都知道,在编程语言中,括号是很常见的,常常用来表示优先级,python也不例外,所以以下这样的语句
中的括号,都会被理解为优先级.
a=('str') 等同于 a='str'
b=(1) 等同于 b=1
所以构造包含1个元素的元组,不能用(1),而要用(1,),即在这一个元素的后面加上个逗号,这样就没毛病了,输出时也会带个括号,提醒你这是元组而不是数学上的小括号.
那么为啥还要说下列表呢,因为列表的[]不存在歧义,所以怎么打都可以啦.

两张图片分析......