Python全栈工程师(集合、函数)

 

 

 

 

 ParisGabriel
 
               感谢 大家的支持  你们的阅读评价就是我最好的动力  我会坚持把排版内容以及偶尔的错误做的越来越好 
 
                                
 
                     



                   每天坚持 一天一篇 点个订阅吧  灰常感谢    当个死粉也阔以

 

                              Python人工智能从入门到精通

 

集合 set:
        集合是可变的容器
        集合内的数据对象都是唯一的(不能重复的)
  集合是无序的储存结构。集合中的数据没有先后顺序关系
  集合内的元素必须是不可变对象
  集合是可迭代对象
  集合相当于只有键没有值得字典(键则是集合的数据)
  (相当于字典和列表的结合 )

创建集合:
  s = set() #空集合
  s = {3.14,True,(1970.1.1),“hello”} #非空

集合的构造函数:
  set()创建一个空集合(不能用{} 否则就是字典了)
  set(iterable)用可迭代对象创建一个新的集合
  创建新集合 内容重复会自动去重

例如:

集合的运算:
  交集、并集、补集,子集、超集
& 生成连个集合的交集
  重复部分
  s1 ={1,2,3}
  s2 ={2,3,4}
  s3 = s1&s2 #s3 = {2,3}


| 生成两个集合的并集
  所有不重复部分
  s1 ={1,2,3}
  s2 ={2,3,4}
  s3 = s1 | s2 #s3 = {1,2,3,4}

- 生成两个集合的补集
  相当于减法
  s1 ={1,2,3}
  s2 ={2,3,4}
  s3 = s1 - s2 #s3 = {1}

^ 生成两个集合的对称补集
  相当于减法相加
  s1 ={1,2,3}
  s2 ={2,3,4}
  s3 = s1 ^ s2 # (s1 - s2 | s2 - s1) #{1, 4}

> 判断一个集合是另一个集合的超集
< 判断一个集合是另一个集合的子集
  s1 ={1,2,3}
  s2 ={2,3}
  s1 > s2 #true s1 为s2的 超集
  s1 < s2 #true s1 为s2的 子集

  (包含关系判断)
== != 集合相同/不同
  s1 ={1,2,3}
  s2 ={3,2,1}
  s1 == s2 # true
  s1 != s2 #false

in / not in :
  等同于字典的运算
  判断某个值是否存在

集合和字典的优点:
  in/not in 运算符速度相对来说快一些

能用于集合的函数:
  len(x)、max(x)、min(x)、sum(x)、any(x)、all(x)

 

Python3中常用的集合方法:
  方法 ;          意义:
  S.add(e)        在集合中添加一个新的元素e;如果元素已经存在,则不添加
  S.remove(e)       从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误
  S.discard(e)       从集合S中移除一个元素e,在元素e不存在时什么都不做;
  S.clear()        清空集合内的所有元素
  S.copy()        将集合进行一次浅拷贝
  S.pop()         从集合S中删除一个随机元素;如果此集合为空,则引发KeyError异常
  S.update(s2)        用 S与s2得到的全集更新变量S
  S.difference(s2)      用S - s2 运算,返回存在于在S中,但不在s2中的所有元素的集合
  S.difference_update(s2)      等同于 S = S - s2
  S.intersection(s2)           等同于 S & s2
  S.intersection_update(s2)   等同于S = S & s2
  S.isdisjoint(s2)        如果S与s2交集为空返回True,非空则返回False
  S.issubset(s2)        如果S与s2交集为非空返回True,空则返回False
  S.issuperset(...)     如果S为s2的子集返回True,否则返回False
  S.symmetric_difference(s2)            返回对称补集,等同于 S ^ s2
  S.symmetric_difference_update(s2)    用 S 与 s2 的对称补集更新 S
  S.union(s2)                生成 S 与 s2的全集

 

集合推导式:
  结合推导式是用可迭代对象生成集合的表达式
语法:
  {表达式 for 变量 in 可迭代对象[if 真值表达式]}
  之前说过 [ ] 内的代表可以省略
例如:
  L= [1, 2, 5, 6, 3, 5, 9, 4, 5]
  s = {x for x in L)}
  (推导式嵌套同列表 、 字典一致)

 

固定集合 frozenset:
  是不可变的、无序的、含有唯一元素的集合
  用于固定集合可以作为字典的键,还可以作为集合的值
构造函数:
  frozenset() 创建一个空固定集合
  frozenset(iterable)用可迭代对象创建固定集合
例如:
  f = frozenset()# 空固定集合
  f = frozenset([ 1, 3, 5, 7]) # f = frozenset({1, 3, 5, 7})

固定集合运算:
  & 交集 、 | 并集 、- 补集、^ 对称补集
  >、 >= 、< 、<=、 ==、 !=
  in /not in
  (和集合 set 一致)
固定集合方法:
  集合的方法取掉所有修改方法


                             小结: