python基础08_set集合
关于前几次课的回顾:
#!/usr/bin/env python # coding:utf-8 ## 字符串 数字 列表 元组 字典 ## 可变:列表 字典 ## 不可变:字符串, 数字, 元组 name = 'alex' print(id(name)) name = 'ssb' print(id(name)) # 修改变量的值 id 的变化证明是不可变类型 ## 访问顺序 # 直接访问:数字 # 顺序访问:字符串 列表 元组 # 映射: 字典 速度快,但占内存大 ## 存放元素个数: # 容器类型:列表,元组,字典 # 原子:数字,字符串
开始学习set 集合
更多参考: https://www.cnblogs.com/jin-xin/p/7738630.html
#!/usr/bin/env python # coding:utf-8
tmp1 = [] # 创建空列表 list
tmp2 = () # 创建空元组 tuple
tmp3= {} # 创建空字典 dict
tmp4= set() # 创建空集合 set
s = {'ss',1,3,2,4,6,8,2,4}
print(s,type(s)) # 注意和字典的区别 字典是KV对,集合只有V # 集合是无序的 这个特点可以用来给list去重 # 不同元素组成, 即没有相同元素 # 元素必须是不可变类型, 不能是list for i in s: print(i) s1 = {(11,22,33,),44} print(s1) s2 = set('hello') # 自动去重 print(s2) list1 = ['alex','ees','ddef','ees'] print(list1) s3 = set(list1) print(s3) s.add('ddc') # 添加单个元素 s.add(8) print(s) s3.clear() # 清空 print(s3) s4 = s.copy() print(s4) s4.pop() # 随机删除一个元素 而列表list则是默认删除最后一个 tmp = s4.pop() # 也可将删除的一个元素赋给变量
print(tmp) # 得到删除的那个值 print(s4) s.remove('ddc') # 指定删除 # s.remove('aaa') # 如果指定的没在,将出错 v = s.discard('aaa') # 如果指定的没在,删除不成功也不报错。 print(s)
# 此外,set 还有 update 等方法.
关于set的交差并补
#!/usr/bin/env python # coding:utf-8 lis1 = ['tom', 'jerry', 'andy', 'anna'] lis2 = ['kathy', 'jerry', 'andy', 'joe'] s1 = set(lis1) s2 = set(lis2) # 求交集 (共有的部分) print(s1, s2) print(s1.intersection(s2)) print(s1 & s2) # 求并集 (合并且去重) print(s1.union(s2)) print(s1 | s2) # 求差集 (减去s1中有s2的部分,得到剩余的) print(s1.difference(s2)) print("s1剩下:", s1 - s2) print("s2剩下:", s2 - s1) # 求交差补集 (去掉共有的,留下各自私有的) print('交叉补集', s1.symmetric_difference(s2)) print('交叉补集', s1 ^ s2) # 某些方法 print(s1-s2) s1.difference_update(s2) # 等于s1 - s2后再赋给s1 print(s1) # 判断有无交集 print(s1.isdisjoint(s2)) s3 = {1,2,3,4,5} s4 = {1,2,3,5} s5 = {11,22,33} print(s4.issubset(s3)) # 判断是否子集 print(s3.issuperset(s4)) # 判断s3 是否父集 s3.add(6) # 每次只能添加一个值 print(s3) s3.update(s5) # 单次可以更新多个值 s3.update(['aa','bb']) # 传列表 s3.update(('cc','dd')) # 传元组 print(s3) # 如果不考虑顺序,可以用set给列表去重 ls = ['abc','fff','abc','dde'] ls = list(set(ls)) print(ls) ######### 特殊: 不可改变的 set s = frozenset('hello') # 将不能添加、删除、修改 print(s)