python集合

定义

集合跟我们学的列表有点像,也是可以存一堆数据,不过它有几个独特的特点,令其在整个Python语言中占有一席之地,

 

    1. 里面的元素不可变,代表你不能存一个list、dict 在集合里,字符串、数字、元组等不可变类型可以存

 

    1. 天生去重,在集合里没办法存重复的元素

 

    1. 无序,不像列表一样通过索引来标记在列表中的位置 ,元素是无序的,集合中的元素没有先后之分,如集合{3,4,5}和{3,5,4}算作同一个集合

 

基于上面的特性,我们可以用集合来干2件事,去重和关系运算

语法

创建集合

  1. >>> a = {1,2,3,4,2,'alex',3,'rain','alex'}
  2. >>> a
  3. {1, 2, 3, 4, 'alex', 'rain'}

由于它是天生去重的,重复的值你根本存不进去

帮列表去重

帮列表去重最快速的办法是什么? 就是把它转成集合,去重完,再转回列表

  1. >>> b
  2. [1, 2, 3, 4, 2, 'alex', 3, 'rain', 'alex']
  3. >>> set(b)
  4. {1, 2, 3, 4, 'alex', 'rain'}
  5. >>>
  6. >>> b = list(set(b)) #一句代码搞定
  7. >>> b
  8. [1, 2, 3, 4, 'alex', 'rain']

 

增删改查

  1. >>> a
  2. {1, 2, 3, 4, 'alex', 'rain'}
  3. #新增
  4. >>> a.add('黑姑娘')
  5. #删除discard
  6. >>> a
  7. {2, 3, '黑姑娘', 'alex', 'rain'}
  8. >>> a.discard('rain') #删除一个存在的值
  9. >>> a.discard('rain2') #如果这个值不存在,do nothing.
  10. >>> a
  11. {2, 3, '黑姑娘', 'alex'}
  12. >>>
  13. #随机删除,少用,或特定场景用
  14. >>> a.pop() #删除并返回
  15. 1
  16. #删除remove
  17. >>> a.remove(4)
  18. #查
  19. >>> a
  20. {2, 3, '黑姑娘', 'alex', 'rain'}
  21. >>> 'alex' in a
  22. True
  23. #改
  24. 呵呵,不能改。。。

 

关系运算

  1. s_1024 = {"佩奇","老男孩","海峰","马JJ","老村长","黑姑娘","Alex"}
  2. s_pornhub = {"Alex","Egon","Rain","马JJ","Nick","Jack"}
  3. print(s_1024 & s_pornhub) # 交集, elements in both set
  4. print(s_1024 | s_pornhub) # 并集 or 合集
  5. print(s_1024 - s_pornhub) # 差集 , only in 1024
  6. print(s_pornhub - s_1024) # 差集, only in pornhub
  7. print(s_1024 ^ s_pornhub) # 对称差集, 把脚踩2只船的人T出去

两个集合之间一般有三种关系,相交、包含、不相交。在Python中分别用下面的方法判断:

    1. print(s_1024.isdisjoint(s_pornhub)) # 判断2个集合是不是不相交,返回True or False
    2. print(s_1024.issubset(s_pornhub)) # 判断s_1024是不是s_pornhub的子集,返回True or False
    3. print(s_1024.issuperset(s_pornhub)) # 判断s_1024是不是s_pornhub的父集,返回True or False
posted @ 2021-03-15 11:33  好吗,好  阅读(119)  评论(0)    收藏  举报