集合

特点:对于大量数据 查找,删除,添加速度快。in 运算符 判断一个对象是否存在于集合中

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


创建空集合:
  s = set()
创建非空集合:
  s = {1,2,3,4,5}
  s = set(range(1, 6))


集合的构造函数
  set()  创建一个空集合(不能用{}来创建空集合)
  set(iterable)  用可迭代对象创建一个新的集合
示例:
  s = set()  # 空集合
  s = set("ABC")  # {'A', 'C', 'B'}
  s = set("ABCCBA")  # {'C', 'B', 'A'}
  s = set({1 : "1", 2:"2", 5:"5"})  # {1, 2, 5}
  s = set([1, 0, 3.14, 0.618, "ABC"]) 
  s = set(("ABC", 123, True))  
  s = {True, None, "ABC", (1,2,3)}


集合的运算:
  交集  并集,补集, 子集,超集


& 生成两个集合的交集
  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}
# 属于 s1,但不属于 s2的所有元素的集合
s3 = s1 - s2  # s3 = {1}  


^ 生成两个集合的对称补集
s1 = {1,2,3}
s2 = {2,3,4}
# 属于 s1,但不属于 s2的集合 并上 属于s2 但不属于s2的集合
s3 = s1 ^ s2  # s3 = {1, 4}  
# 相当于  s3 = (s1 - s2) | (s2 - s1)




请问:
  s1 = {1,2,3}
  s2 = {7,8,9}
  s1 ^ s2 返回的结果是什么???
  s1 - s2 返回的结果是什么???


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


== != 判断集合是否相同
>= <= 判断集合的包含关系和是否相同  
  {1,2,3} == {3,2,1}  # True
  {1,2}  <= {2,3,1}  # True


in / not in 
   10 in {1,2,3,4,5,6,7,8, "ABC"}
等同于字典,in 运算符用于判断一个对象是否存在于集合中
  集合的特点是对于大量数 查找,删除,添加速度快


可以用于集合的内建函数:
len(x)
max(x)
min(x)
sum(x)
any(x)
all(x)


集合是可迭代对象,集合的迭代不保证先后顺序





python3 集合中常用的方法:
S 代表集合
S.add(e)  在集合中添加一个新的元素e,如果元素存在,则不添加
S.remove(e)  从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误
S.discard(e)  从集合S中移除一个元素e(不会出错)
S.clear()  清空集合
S.copy()  将集合进行一次浅拷贝
S.pop()  从集合S中删除一个随机元素;如果此集合为空,则引发KeyError异常
S.update(S2) 用S与S2得到并集来更新S


集合的修改单个元素通常是先删除,后加入


集合推导式:
语法:
  {表达式 for 变量 in 可迭代对象 [if 真值表达式]}


  注:[] 里的内容代表可省略


示例:
  # 将1~10 的奇数的平方生成一个集合
  s = {x ** 2 for x in range(1, 11) if x % 2}


  names = ["Tom", "Jerry", "Spike", "Tom", "Jerry", "Tyke"]
  animals_set = {n for n in names}


集合推导式嵌套
  语法同列表推导式






固定集合 frozenset
  固定集合是不可变的,无序的,含有唯一元素的集合
作用:
  可以作为字典的键,也可以作为集合的值


创建空的固定集合:
   frozenset()
创建非空的固定集合:
   frozenset(iterable)
示例:
  f = frozenset()  # f = frozenset()
  f = frozenset(range(10))


运算:
  &  |  -  ^
  < <= > >= == != 
  in / not in 
  (以上运算与 set 完全相同)


固定集合的方法:
  相当于集合的全部方法去掉修改集合的方法





1 阶段总结
数据类型 :
  不可变的
     bool int float complex str, tuple, frozenset
  可变的
    list, dict, set, bytearray(后面再学)


值:
  None, True, False


运算符:
  +, -, *, /, //, %, **
  <, <=, >, >=, ==, !=, is, is not
  in, not in
  not, and, or
  &, |, ^, <<, >>, ~
  +(正号), -(负号)


表达式
  1
  print("hello")
  1 + 2
  sum(range(10)) + sum(range(20))
  条件表达式  x if x > y else y
  全部的推导式 [x for x in range(10)]


语句:
  1. 表达式语句
    print("hello!")
  2. 赋值语句
    a = 100
    x, y = 200, 300
    a += 50
    a = b = c = 10000
  3. if 语句
  4. while 语句
  5. for 语句
  6. del 语句
  7. break 语句
  8. continue 语句
  9. pass 语句


内建函数:
  len(x)
  max(x)
  min(x)
  sum(x)
  any(x)
  all(x)
  ------------
  bool(x)
  int(x)
  float(x)
  complex(x)
  str(x)
  list(x)
  tuple(x)
  dict(x)
  set(x)
  frozenset(x)
  ------------
  abs(x)
  round(x)
  ------------
  bin(x)
  oct(x)
  hex(x)
  chr(x)
  ord(x)
  ------
  range(start, stop, step)
  ------
  input(x)
  print(....)






>>> dir(__builtins__)
>>> help(__builtins__)









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值