python基础教程:Python集合操作方法详解

淡淡的烟草味﹌ 2023-07-04 15:54 45阅读 0赞

集合是无序的,天生不重复的数据组合,它的作用如下:

去重,即:把一个列表变成集合,就去重了
关系测试,即:测试两组集合的交集、并集和差集等
一、集合常用方法总结在这里插入图片描述
二、定义
1、语法

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. #把列表转换为集合
  3. >>> name_1 = set(name_1)
  4. #转换后,去重
  5. >>> print(name_1,type(name_1))
  6. { 1, 2, 3, 4, 7, 8, 10} <class 'set'>

三、关系测试
1、交集(intersection())

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. >>> name_2 = [1,3,5,8,10]
  3. >>> name_1 = set(name_1)
  4. >>> name_2 = set(name_2)
  5. #输出结果
  6. >>> name_1.intersection(name_2)
  7. { 8, 1, 10, 3}

2、并集(union())

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. >>> name_2 = [1,3,5,8,10]
  3. >>> name_1 = set(name_1)
  4. >>> name_2 = set(name_2)
  5. #输出结果
  6. >>> name_1.union(name_2)
  7. { 1, 2, 3, 4, 5, 7, 8, 10}

3、差集(difference())

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. >>> name_2 = [1,3,5,8,10]
  3. >>> name_1 = set(name_1)
  4. >>> name_2 = set(name_2)
  5. #输出结果
  6. >>> name_1.difference(name_2)
  7. { 2, 4, 7}

特别提示:差集取的是数值在第一个集合中,但是不在第二个集合中(在我不在你)
4、issubset()
判断一个集合是否是另一个集合的子集

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. >>> name_3 = [1,2,3,4]
  3. >>> name_1 = set(name_1)
  4. >>> name_3 = set(name_3)
  5. #输出结果
  6. >>> name_3.issubset(name_1)
  7. True

5、issuperset()
判断一个集合是否是另一个集合的父集

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. >>> name_3 = [1,2,3,4]
  3. >>> name_1 = set(name_1)
  4. >>> name_3 = set(name_3)
  5. #输出结果
  6. >>> name_1.issuperset(name_3)
  7. True

6、对称差集(symmetric_difference())
把两个集合没有交集的数值取出来

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. >>> name_2 = [1,3,5,8,10]
  3. >>> name_1 = set(name_1)
  4. >>> name_2 = set(name_2)
  5. #输出结果
  6. >>> name_1.symmetric_difference(name_2)
  7. { 2, 4, 5, 7}

7、isdisjoint()
判断两个集合是否有交集,没有交集,则返回True

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. >>> name_2 = [1,3,5,8,10]
  3. >>> name_3 = [11]
  4. >>> name_1 = set(name_1)
  5. >>> name_2 = set(name_2)
  6. >>> name_3 = set(name_3)
  7. #有交集
  8. >>> name_1.isdisjoint(name_2)
  9. False
  10. #无交集
  11. >>> name_1.isdisjoint(name_3)
  12. True

四、关系测试(特殊符号)
1、交集(&)

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. >>> name_2 = [1,3,5,8,10]
  3. >>> name_1 = set(name_1)
  4. >>> name_2 = set(name_2)
  5. #结果输出
  6. >>> name_1 & name_2
  7. { 8, 1, 10, 3}

2、并集(|)

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. >>> name_2 = [1,3,5,8,10]
  3. >>> name_1 = set(name_1)
  4. >>> name_2 = set(name_2)
  5. #结果输出
  6. >>> name_1 | name_2
  7. { 1, 2, 3, 4, 5, 7, 8, 10}

3、差集(-)

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. >>> name_2 = [1,3,5,8,10]
  3. >>> name_1 = set(name_1)
  4. >>> name_2 = set(name_2)
  5. #结果输出
  6. >>> name_1 - name_2
  7. { 2, 4, 7}

4、对称差集(^)

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. >>> name_2 = [1,3,5,8,10]
  3. >>> name_1 = set(name_1)
  4. >>> name_2 = set(name_2)
  5. #输出
  6. >>> name_1 ^ name_2
  7. { 2, 4, 5, 7}

5、是否是子集(<=)

  1. >>> name_1 = [1,2,3,4,7,8,10]
  2. >>> name_3 = [1,2,3,4]
  3. >>> name_1 = set(name_1)
  4. >>> name_3 = set(name_3)
  5. #输出
  6. >>> name_3 <= name_1
  7. True

6、是否是父集(>=)

  1. >>> name_1 = [1,2,3,4,7,8,10]
  2. >>> name_3 = [1,2,3,4]
  3. >>> name_1 = set(name_1)
  4. >>> name_3 = set(name_3)
  5. #输出
  6. >>> name_1 >= name_3
  7. True

五、基本操作
1、添加(add())

  1. >>> name_2 = [1,3,5,8,10]
  2. >>> name_2 = set(name_2)
  3. #添加已存在,不报错
  4. >>> name_2.add(1)
  5. >>> name_2
  6. { 8, 1, 10, 3, 5}
  7. #添加不存在,添加一个新的数值
  8. >>> name_2.add(11)
  9. >>> name_2
  10. { 1, 3, 5, 8, 10, 11}

2、添加多项(update())

  1. >>> name_2 = [1,3,5,8,10]
  2. >>> name_2 = set(name_2)
  3. >>> name_2.update([12,13,14])
  4. #输出结果
  5. >>> name_2
  6. { 1, 3, 5, 8, 10, 12, 13, 14}

3、删除(remove(),pop(),discard())
①remove()

  1. >>> name_2 = [1,3,5,8,10]
  2. >>> name_2 = set(name_2)
  3. >>> name_2
  4. { 8, 1, 10, 3, 5}
  5. >>> name_2.remove(1)
  6. #输出
  7. >>> name_2
  8. { 8, 10, 3, 5}
  9. #删除不存在的元素,会报错
  10. >>> name_2.remove(1)
  11. Traceback (most recent call last):
  12. File "<input>", line 1, in <module>
  13. KeyError: 1

特别提示:用remove删除时,当元素不存在,会报错
②pop()

  1. >>> name_2 = [1,3,5,8,10]
  2. >>> name_2 = set(name_2)
  3. >>> name_2
  4. { 8, 1, 10, 3, 5}
  5. #输出
  6. >>> name_2.pop()
  7. 8

特别提示:pop是随机删除集合中的某个元素,并且打印
③discard()

  1. >>> name_2 = [1,3,5,8,10]
  2. >>> name_2 = set(name_2)
  3. >>> name_2.discard(10)
  4. #输出结果
  5. >>> name_2
  6. { 8, 1, 3, 5}
  7. #删除不存在元素,不报错
  8. >>> name_2.discard(10)

特别提示:用discard删除不存在的元素,不会出现报错
4、长度(len())

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. >>> name_1 = set(name_1)
  3. #结果输出
  4. >>> len(name_1)
  5. 7

5、x in s
测试 x 是否是 s 的成员

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. >>> name_1 = set(name_1)
  3. #结果输出
  4. >>> 1 in name_1
  5. True

6、x not in s
测试 x 是否不是 s 的成员

  1. >>> name_1 = [1,2,3,4,7,8,7,10]
  2. >>> name_1 = set(name_1)
  3. #输出
  4. >>> 12 not in name_1
  5. True

推荐我们的Python学习扣qun:774711191 ,看看前辈们是如何学习的!从基础的python脚本到web开发、爬虫、django、数据挖掘等【PDF,实战源码】,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!每天都有大牛定时讲解Python技术,分享一些学习的方法和需要注意的小细节,点击加入我们的 python学习者聚集地

发表评论

表情:
评论列表 (有 0 条评论,45人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Python基础教程:set集合教程

    一、集合类型 集合是一组无序排列的可哈希的值(可哈希的值->不可变),集合成员可以做字典中的键。但集合本身是不可哈希的。 集合是无序没有索引,也没有像字典的key,所以集合

    相关 python基础教程-文件操作

     一、文件操作       打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。 打开文件的模式有: