1、元祖(tuple)
Python将不能修改的值称为不可变的 ,而不可变的列表被称为元组 。元祖处理数据比列表更快,元祖不能更改但是可以重新定义,元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。但是元祖并不是以圆括号来设定的,而是逗号。
如:
>>> a=1,
>>> type(a)
<class 'tuple'>
>>> a
(1,)
>>> a=1,2,3
>>> a
(1, 2, 3)
>>> a=(1)
>>> a
1
>>> type(a)
<class 'int'>
由上可知,决定性因素在于逗号,光是括号的话定义的是整型,并非元祖。
元祖的元素访问和列表一样。
如:
>>> a=1,2,3,4
>>> a
(1, 2, 3, 4)
>>> a[0]
1
>>> a[-1]
4
>>> a[3-1]
3
>>> a[3/1]
>>> a[3//1]
4
>>> a[3%1]
1
元祖也可以用循环语句来遍历
多元性赋值元祖
如:
>>> x,y=((1,),(2,))
>>> x
(1,)
>>> y
(2,)
可以一句话赋值或交换(x,y=y,x)两个元祖
如:
>>> x,y=y,x
>>> x
(2,)
>>> y
(1,)
如果要确定一个值是不是可变类型的时候可以通过哈希运算知晓,能进行哈希运算的是不可变类型,不能进行哈希运算的是可变类型。
如:
>>> hash('123')
7144841512821313950
>>> hash(123)
123
#字符串和整型是不可变类型,所以用hash函数运算的时候有哈希值
>>> hash([1,2])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
#列表是可变类型,在进行hash运算的时候报错,由此可以区分
什么是哈希呢?
哈希其实是一种算法,又称数字摘要、“消息摘要”,简单理解hash就是一种数据内容和数据存放地址之间的映射关系。Hash算法是一种只能加密不能解密的算法,可以将任意长度的信息转成杂乱的固定长度的字符串。应用最广泛的Hash算法有MD5和SHA-1。
python培训班:http://www.baizhiedu.com/python2019