首页 > python基础教程> 详细内容
(32)python少儿编程之集set(二)
日期:2020-02-26 

开头,我把可hash的类型再写一遍

  • 数值型 int、float
  • 布尔型 True False
  • 字符串 string bytes
  • tuple 元组
  • None
  • 以上都是不可变的类型 ,可hash类型 ,hashable

其实集合set 还有后面的dict字典类型,内部使用一个hash值作为一个key,这个hash怎么产生,我们先不讨论,当我们把1放到set里面,其实set同时保存了一个1和他的hash值,也就是我们看到的1,其实程序用他的hash值来进行匹配的

也就是以上这些类型 都可以作为set的元素保存起来

如果记不住 你可以反过来记 除了列表,集合,bytearray 其他都是可以作为集合的元素


集合

  • 了解一下集合的概念 小学应该都学过
  • 全集,所有元素的集合
  • 子集和超集,一个集合A的所有元素都在集合B里面,那么A就是B的子集,B就是A的超集
  • 真子集和真超集,A是B的子集,但A的数量比B小,A就是B的真子集,那么B就是A的真超集
  • 并集,多个集合合并的结果
  • 交集,多个集合的公共部分
  • 差集,集合中出去和其他集合公共部分

并集

  • 将两个集合的所有元素合并在一起,组成新的集合称为A和B的并集
  • union(*others)
  • 返回多个集合合并后的新集合 原本的集合没有发生改变
  • 也可以用 | 运算符
  • update(*other)
  • 和其他集合合并,就地修改
  • 也可以用 |= 运算符
(32)python少儿编程之集set(二)
  • 如图,用union,s1和s2 都没改变 返回新的集合给s3
  • 但是用update 直接修改了s1 ,也没有返回新的集合

交集

(32)python少儿编程之集set(二)
  • 蓝色部分就是交集
  • 集合A和B,由共同属于A和B的元素组成的集合
  • intersection(*others)
  • 和并集一样 也是返回新的集合 不修改原来的集合
  • 可以用 & 运算符表示
  • intersection_update(*others)
  • 获取交集,修改原来的集合
  • 可以用 &= 运算符表示
(32)python少儿编程之集set(二)
  • 如图,s1和s2的交集是2,3
  • 用intersection没有改变s1和s2 ,生成了一个s3
  • 但是用Intersection_update 以后改变了s1 但是没有生成s3

差集

(32)python少儿编程之集set(二)
  • 如图,蓝色的部分
  • 集合A和B,由所有属于单不属于B的元素组成的集合
  • difference(*other)
  • 返回多个集合的差集
  • 可以用 - 运算符
  • difference_update(*others)
  • 获取差集 并原地修改
  • 可以用 -= 运算符
(32)python少儿编程之集set(二)
  • 如图,应该都比较容易理解

对称差集

(32)python少儿编程之集set(二)
  • 如图,蓝色部门
  • 集合A和B,由不属于A和B的交集元素组成的集合
  • symmetric_differece(other) 或 ^
  • 返回新的差集 不修改
  • symmetric_differece_update(other) 或 ^=
  • 获取差集 并修改
(32)python少儿编程之集set(二)
  • 如图,去除s1和s2的交集 就是1,4 ^不修改 ^= 修改原集合