单元概述
主要解决问题:让程序更好地处理一组数据
三类重要组合数据类型:集合类型、序列类型和字典类型
学完本章,我们能够在头脑中建立集合、序列和字典的模式来表达对一组数据的表达和处理
1. 定义
集合是多个元素的无序组合
集合中的元素不能重复
集合中的元素是不可变数据类型-否则可能打破上一条
不可变数据类型有:整数、浮点数、负数、字符串、元组
2. 表示
集合用大括号{}表示,元素之间用逗号分隔
建立集合使用{}或者set() -建立空集合必须使用set()
例
A = {
"python",123,("python",123)}
B = set("pypy123")
print(A)
print(B)
输出
{‘python’, (‘python’, 123), 123}
{‘3’, ‘1’, ‘2’, ‘p’, ‘y’}//注意,集合中元素并无顺序
3. 集合操作符
① 并 |
② 差 –
③ 交 &
④ 并减交 ^
⑤ 关系操作符 判断一个集合是否包含在另一个当中 返回True/False
< <= > >=
⑥ 增强操作符-用S和T的操作结果更新S
例
A = {
"p","y","python",123,("python",123)}
B = set("pypy123")
print(A-B)
结果
{‘python’, 123, (‘python’, 123)}
4. 集合处理方法
增加元素 S.add(x)
删除元素 S.discard(x) 和 S.remove(x) 前者删除不存在元素不会报错,后者会
清空集合 S.clear()
随机取出元素并更新集合 S.pop() 如果S为空,返回异常
复制集合 S.copy() 返回集合S的一个副本
求元素个数 len(S)
判断元素是否在集合S中 x in S 返回True/False 对应有 x not in S
转为集合类型 set(x)
使用for in遍历集合的时候,集合的顺序是不确定的
(集合在定义时有存储顺序,但这个顺序程序员无法利用)
例
A = {
"A","B",123}
for item in A:
print(item,end="")
输出
B123A
也可以用while对集合进行遍历
例
A = {
"A","B",123}
try:
while True:
print(A.pop(),end="")
except:
pass
print("",A)
输出
B123A set()
5. 集合类型应用场景
① 包含关系的比较,即已知一组数据,如何判断另一组或者其他数据是否在当中
例
sss = "p" in {
"p","y",123}
print(sss)
ttt = {
"p"} > {
"p","y",123}
print(ttt)
输出
True
False
② 数据去重,即将一个有重复类型的列表,变成一个无重复类型的
例
ls = ["p","p","y","y",123]#列表
s = set(ls)#集合
lt = list(s)#列表
print(lt)
输出
[‘p’, 123, ‘y’]
出处:北理工Python慕课