学习Python的第四节课(元组、字典、集合+数据类型总结)
1、数据类型之元组
元组属于不可变的序列,用于存放不能修改的多个数据。
- 访问元组中元素比访问列表中元素的速度快。如果定义了一系列的常 量值,主要用途是对其进行遍历,而不需要对元素进行修改的话,建议使用元组而不是列表。
- 元组使得代码更加安全,例如调用函数时使用元组传递参数可以防止 在函数中修改元组,而使用列表则很难保证这一点。
(1)元组的创建
元组名=(值1,值2,...)
元组名= tuple(值)
知识点:用圆括号和逗号直接创建元组时,逗号是创建元组的关键!
(2)元组与列表区别
- 元组创建后,其元素值是不能通过增加或删除方法来改变(不支持append()、extend()、insert(),pop(),remove()和del()等方法)。只能使用del命令对元组整体删除。
- 虽然元组属于不可变序列,但如果元组中包含可变序列,情况就略有不同。
(3)元组的序列操作
元组可以进行除了列表中可修改的操作以外的其他操作,例如,元素的索引/切片访问、统计元素长度、排序等。
- index(),count(),len(),in/ not in,max/min()/sum)以及+,*等。
知识点:不支持直接修改元组里用逗号隔开的第一层数据,但元组里的列表内部数据可以修改。尽量养成不要修改元组数据的习惯!
(4)序列解包
使用简洁的方式完成复杂功能,比如说,一次给多个变量同时赋值、多个变量值交换等。
序列封包
把多个值赋给一个变量时,Python会自动的把多个值封装成元组。
序列封包例子:
#序列封包,把多个值赋给一个变量
a= 1,2,3
print (a)#打印(1,2,3)
序列解包
把一个序列(列表、元组、字符串等)直接赋给多个变量,此时会把序列中的各个元素依次赋值给每个变量,但是元素的个数需要和变量个数相同。
序列解包例子:
k1,k2,k3,k4 =‘abed'
print (k1,k2,k3,k4)
#实现变量的值交换
k1,k2,k3,k4=k4,k3,k2,k1
print (k1,k2,k3,k4)
#元素个数与变量个数不相等时,解包会报错
k1,k2,k3 = ‘abcde'
(5)生成器推导式
- 用法与列表推导式非常相似,在形式上生成器推导式使用圆括号,而 列表推导式使用方括号。
- 与列表推导式最大的不同是,生成器推导式的结果是一个生成器对象。 具有惰性求值的特点,只在需要时生成新元素,比列表推导式具有更高的效率,空间占用非常少,尤其适合大数据处理的场合。
例:生成器推导式和列表推导式的对比。
parentheses =(x for x in range(10))
parentheses#输出是一个生成器对象。
square-[x for x in range(10)]
square#输出是列表[0,1,2,3,4,5,6,7,8,9]
注:生成器对象需要遍历才能输出
遍历生成器对象方法:
①将生成器对象转化为列表或元组
②使用生成器对象的__next_._(方法或者内置函数next()进行遍历可迭代对象._next_()或者next(生成器对象)
③使用for循环来遍历其中的元素。
不管用哪种方法访问其元素,只能从前往后正向访问每个元素,没有任何方法可以再次访问己访问过的元素,
也不支持使用下标访问其中的元素。当所有元素访问结束以后,如果需要重新访问其中的元素,必须重新创建该生成器对象。
2、数据类型之字典
字典用在需要高速查找的地方。字典是以‘键值对’(key-value pairs)作为元素的一种序列,字典中的每个元素包含用冒号分隔开的“键”和“值”两部分,表示一种映射或对应关系
(1)字典的创建
字典名={‘键1’:‘值1’,‘键2’:‘值2’,...}
字典名=dict(键1=值1,键2=值2,...)#关键字创建字典
注:
字典中的键(key)是唯一的,且是不可变的类型,比如,字符串、数值、元组均可以作为键使用,但是列表、
字典本身以及后面要学习的集合都是不允许作为键来使用。字典的值可以是不唯一的,也可以是任何类型。
(2)字典的常用操作
字典的常用操作主要包括:添加/修改元素、更新字典、删除元素、计算元素长度、访问元素等。
添加、修改字典元素:字典名[键]–值
A添加字典元素
若指定的“键”不存在,以该键值作为下标,给字典元素赋值。
B修改字典元素
若该“键”存在,则表示修改该“键”的值。
更新字典
字典名1.update(字典名2)
方法update()是用“字典2”里的元素来更新“字典1”里的相同元素,不同的元素添加到字典1
里,因此该方法实际上是合并更新(当两个字典里没有相同的元素时就相当于是合并)。
删除字典元素及字典
删除字典中元素的方式:
pop(key)—删除字典中键为key的元素。
popitem()—随机删除字典中的元素。
clear()——清除字典中所有的元素。
del字典名[key]——删除字典中键为key的元素。
删除字典对象的方法:
del字典对象—从内存中彻底销毁字典对象。
访问字典元素:通过键访问、get方法、items/keys/values方法
通过键访问
使用下标的方式来访问字典中的元素,但与列表和元组不同,字典的下标不是索引,而是字典的“键”,如果指定的“键”不存在则抛出异常。
get()方法
通过字典对象的get()方法访问字典,可以获取指定“键”对应的“值”,如果“键”不存在,则返回None。
items()、keys()、values()方法
items()方法可以返回字典的“键-值对”列表,
keys()方法返回字典的“键”列表,
values()方法返回字典的“值”列表。
统计字典元素个数
len(字典对象)
使用len方法可以获取字典中元素的个数。
3、数据类型之集合
集合(set)是一种无序的可变序列。与字典一样,集合使用花括号表示,每个
元素之间用逗号(,)隔开。可以将集合理解成字典中键的集合,因此集合中的元素是唯一的、不可重复的。
应用:
- 去重
- 关系测试(数学集合运算):测试两组数据之间的交、差、并、子集等关系
(1)集合的创建
集合名={‘元素1’,‘元素2,‘元素3,...}
集合名= set([值1,值2,..])#空集合必须通过这种方式创建set()
(2)集合的操作
集合的常用操作主要包括:添加/修改元素、删除元素、访问元素等。
添加、修改元素:add()、update()方法
add()方法可用于向集合添加一个元素,添加集合中已有元素为无效操作
automorphicNum.add(9) #添加集合元素
automorphicNum.
set([9,5,6,76,625,376,25])
update()方法可以同时添加多个元素。
automorphicNum={5,6,25,76,625,376}
automorphicNum.update([9,5,76]) #同时添加3个元素
automorphicNum
输出:{9,5,6,76,625,376,25} #重复的值只保留一个
删除元素:pop()、 remove()、discard()、clear()
成员判断操作
in:判断数据在集合中
not in:判断数据不在集合中
访问元素
由于集合是无序的,而且没有字典中的键,因此,不能通过下标和键的方式来访问集合中的元素。Python通过循环遍历的方式来访问集合中的元素。
(3)集合支持的运算
①交集&或set.imteasection():计算不同集合中相同的元素
②并集│或.union() :计算不同集合中所有不重复的元素
③差集-或difference :
集合1-集合2 返回集合1中除了集合2元素以外的其他元素。
④对称差^或sxmmetxic_difference():
集合1^集合2 返回除了集合1和集合2中共有元素外的其他元素。
⑤子集运算<或.issubset(:
集合1<集合2 判断集合1是否包含于集合2中,是则返回True,否则返回False.
4、Python数据类型总结
Python数据类型之数据容器对比