• 09 Python学习之集合-set


    集合(set)是一个无序的不重复元素序列。
    可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

    集合的常用方法

    add

    add向一个集合添加一个元素,如果元素已经存在,对集合没用任何影响
    例1:

    s1 = {1, 99, 77, 44, 55}
    s1.add(22)
    s1.add(99)				# 由于99已经存在,顾对集合没有任何改变
    print('添加元素后的集合是:', s1)
    

    运行结果:

    添加元素后的集合是:{1, 99, 44, 77, 22, 55}
    

    clear

    clear用来清空一个集合
    例1:

    s1 = {1, 99, 77, 44, 55}
    s1.clear()
    print('清空后的集合是:',s1)
    

    运行结果:

    清空后的集合是:set()									# 注意空集合的方式是set()
    

    copy

    例1:

    s1 = {1, 99, 77, 44, 55}
    s2 = s1.copy()
    print('复制后的集合是:', s2)
    

    运行结果:

    复制后的集合是: {1, 99, 55, 44, 77}
    

    difference

    difference是返回一个差集,该集合在s1钟,不在s2中
    差集也可以用运算符: -
    例1:

    s1 = {1, 99, 77, 44, 55}
    s2 = {33, 44, 55, 66, 7}
    ret = s1.difference(s2)
    print('只属于s1集合的是:', ret)
    print('s1的元素是:', s1)
    print('s2的元素是:', s2)
    

    运行结果:

    只属于s1集合的是: {1, 99, 77}
    s1的元素是: {1, 99, 44, 77, 55}
    s2的元素是: {33, 66, 7, 44, 55}
    

    例2:
    使用运算符

    s1 = {1, 99, 77, 44, 55}
    s2 = {33, 44, 55, 66, 7}
    ret = s1 - s2
    print('只属于s1集合的是:', ret)
    print('s1的元素是:', s1)
    print('s2的元素是:', s2)
    

    运行结果:

    只属于s1集合的是: {1, 99, 77}
    s1的元素是: {1, 99, 44, 77, 55}
    s2的元素是: {33, 66, 7, 44, 55}
    

    difference_update

    difference_update修改一个集合,移除集合s1中,属于集合s2的元素,
    该方法与difference的不同之处在于,difference会返回一个新集合,而difference_update是修改原集合
    例1:

    s1 = {1, 99, 77, 44, 55}
    s2 = {33, 44, 55, 66, 7}
    s1.difference_update(s2)
    print('s1的元素是:', s1)
    print('s2的元素是:', s2)
    

    运行结果:

    s1的元素是: {1, 99, 77}
    s2的元素是: {33, 66, 7, 44, 55}
    

    discard

    从一个集合从移除一个元素,如果集合中不存在这个元素,不做任何操作
    例1:

    s1 = {1, 99, 77, 44, 55}
    s1.discard(1)
    s1.discard(66)					# 66 不存在于s1中,所以没有任何影响
    print('s1集合的元素是:', s1)
    

    运行结果:

    s1集合的元素是: {99, 44, 77, 55}
    

    intersection

    intersection是返回两个集合的交集,即两个集合相同的元素,该方法会返回一个新的集合
    交集也可以使用运算符: &
    例1:

    s1 = {1, 99, 77, 44, 55}
    s2 = {33, 44, 55, 66, 7}
    ret = s1.intersection(s2)				# 生成一个新的集合
    print('s1和s2的交集是:', ret)
    print('s1的元素是:', s1)
    print('s2的元素是:', s2)
    

    运行结果:

    s1和s2的交集是: {44, 55}
    s1的元素是: {1, 99, 44, 77, 55}
    s2的元素是: {33, 66, 7, 44, 55}
    

    例2:
    使用运算符

    s1 = {1, 99, 77, 44, 55}
    s2 = {33, 44, 55, 66, 7}
    ret = s1 & s2				# 生成一个新的集合
    print('s1和s2的交集是:', ret)
    print('s1的元素是:', s1)
    print('s2的元素是:', s2)
    

    运行结果:

    s1和s2的交集是: {44, 55}
    s1的元素是: {1, 99, 44, 77, 55}
    s2的元素是: {33, 66, 7, 44, 55}
    

    intersection_update

    intersection_update是将两个集合的交集从新赋值给原集合,会改变原集合内容

    例1:

    s1 = {1, 99, 77, 44, 55}
    s2 = {33, 44, 55, 66, 7}
    s1.intersection_update(s2)          # 修改集合s1
    print('s1的元素是:', s1)
    print('s2的元素是:', s2)
    

    运行结果:

    s1的元素是: {44, 55}
    s2的元素是: {33, 66, 7, 44, 55}
    

    isdisjoint

    判断两个集合是否有交集,如果没有返回True,有返回False
    例1:

    s1 = {1, 99, 77, 44, 55}
    s2 = {33, 66, 7}
    print('s1和s2没有有交集: ', s1.isdisjoint(s2))
    

    运行结果:

    s1和s2没有有交集:  True
    

    issubset

    用于判断一个集合是不是另一个集合的子集
    也可以用运算符表示:<

    例1:

    s1 = {1, 99, 77, 44, 55}
    s2 = {77, 44}
    print('判断s2是不是s1的子集: ', s2.issubset(s1))			# 注意自己和自己比,结果是True
    

    运行结果:

    判断s2是不是s1的子集:  True
    

    例2:

    s1 = {1, 99, 77, 44, 55}
    s2 = {77, 44}
    print('判断s2是不是s1的子集: ', s2 < s1)		# 如果s2中有一个元素不是s1的元素, 返回肯定是False
    

    运行结果:

    判断s2是不是s1的子集:  True
    

    issupperset

    用于判断一个集合是不是另一个集合的父集合
    也可以用运算符表示:>

    例1:

    s1 = {1, 99, 77, 44, 55}
    s2 = {77, 44}
    print('判断s2是不是s1的父集: ', s2.issuperset(s1))			# s2 不是 s1的父集
    print('判断s1是不是s2的父集: ', s1.issuperset(s2))			# s1 包含s2,是s2的父集
    

    运行结果:

    判断s2是不是s1的父集:  False
    判断s1是不是s2的父集:  True
    

    例1:

    s1 = {1, 99, 77, 44, 55}
    s2 = {77, 44}
    print('判断s2是不是s1的父集: ', s2 > s1)			# s2 不是 s1的父集
    print('判断s1是不是s2的父集: ', s1 > s2)			# s1 包含s2,是s2的父集
    

    运行结果:

    判断s2是不是s1的父集:  False
    判断s1是不是s2的父集:  True
    

    pop

    pop用于从集合中随机删除一个元素(说是随机,但其实也有一定的规律),并返回这个元素,如果集合是一个空集合,会报KeyError

    例1:

    s1 = {1, 99, 77, 44, 55}
    ret = s1.pop()
    print('被删除的元素是:', ret)
    print('s1的元素是:', s1)
    

    运行结果:

    被删除的元素是: 1
    s1的元素是: {99, 44, 77, 55}
    

    remove

    remove是移除一个指定的元素,如果集合中不存在这个元素,报KeyError错误
    例1:

    s1 = {1, 99, 77, 44, 55}
    s1.remove(99)
    print('移除99后的集合是:', s1)
    
    s1.remove(100)
    print('移除不存在的元素,会报错')				# 不会打印这行,因为在上行就报错了
    

    运行结果:

    移除99后的集合是: {1, 44, 77, 55}							# 移除的元素不存在,报错
    Traceback (most recent call last):
      File "/projects/oldboy/desktop-computer/week03/set_test.py", line 33, in <module>
        s1.remove(100)
    KeyError: 100
    

    symmetric_difference

    symmetric_difference对称差集,是将两个集合中除去相同的元素,将各自不同的元素组合成一个新的集合,并返回
    也可以使用符号: ^

    例1:

    s1 = {1, 99, 77, 44, 55}
    s2 = {33, 44, 55, 66, 7}
    ret = s1.symmetric_difference(s2)
    print('s1和s2的对称差集是:', ret)
    print('s1的元素是:', s1)
    print('s2的元素是:', s2)
    

    运行结果:

    s1和s2的对称差集是: {33, 66, 1, 99, 7, 77}
    s1的元素是: {1, 99, 44, 77, 55}
    s2的元素是: {33, 66, 7, 44, 55}
    

    例2:
    使用符号

    s1 = {1, 99, 77, 44, 55}
    s2 = {33, 44, 55, 66, 7}
    ret = s1 ^ s2
    print('s1和s2的对称差集是:', ret)
    print('s1的元素是:', s1)
    print('s2的元素是:', s2)
    

    运行结果:

    s1和s2的对称差集是: {33, 66, 1, 99, 7, 77}
    s1的元素是: {1, 99, 44, 77, 55}
    s2的元素是: {33, 66, 7, 44, 55}
    

    symmetric_difference_update

    symmetric_difference_update是将对称差集赋值给原集合

    s1 = {1, 99, 77, 44, 55}
    s2 = {33, 44, 55, 66, 7}
    s1.symmetric_difference_update(s2)
    print('s1和s2的对称差集赋值给s1:', s1)
    print('s2的元素是:', s2)
    

    运行结果:

    s1和s2的对称差集赋值给s1: {1, 33, 99, 66, 7, 77}
    s1和s2的对称差集是: {33, 66, 7, 44, 55}
    

    union

    union是返回两个集合的并集,如果两个集合中有相同的部分,只会保留一份
    并集也可以使用运算符: |
    例1:

    s1 = {1, 99, 77, 44, 55}
    s2 = {33, 44, 55, 66, 7}
    ret = s1.union(s2)
    print('s1和s2的并集是::', ret)
    print('s1的元素是:', s1)
    print('s2的元素是:', s2)
    

    运行结果:

    s1和s2的并集是:: {1, 33, 99, 66, 7, 44, 77, 55}
    s1的元素是: {1, 99, 44, 77, 55}
    s2的元素是: {33, 66, 7, 44, 55}
    

    例2:
    使用运算符

    s1 = {1, 99, 77, 44, 55}
    s2 = {33, 44, 55, 66, 7}
    ret = s1 | s2
    print('s1和s2的并集是::', ret)
    print('s1的元素是:', s1)
    print('s2的元素是:', s2)
    

    运行结果:

    s1和s2的并集是:: {1, 33, 99, 66, 7, 44, 77, 55}
    s1的元素是: {1, 99, 44, 77, 55}
    s2的元素是: {33, 66, 7, 44, 55}
    

    update

    update用于和一个集合添加元素,相当于将两个集合合并后,从新赋值给原集合

    例1:

    s1 = {1, 99, 77, 44, 55}
    s2 = {33, 44, 55, 66, 7}
    s1.update(s2)
    print('s1的元素是:', s1)
    print('s2的元素是:', s2)
    

    运行结果:

    s1的元素是: {1, 33, 99, 66, 7, 44, 77, 55}
    s2的元素是: {33, 66, 7, 44, 55}
    
  • 相关阅读:
    外部中断实验
    冒泡算法代码
    第5章 嵌入式系统开发与维护知识 5.1
    C语言学习视频,栈,队列,链式栈,链式队列
    USART的配置
    树的一些基本概念
    mysql外键
    数据结构之【队列】
    数据结构之【栈】
    数据结构之【数组】
  • 原文地址:https://www.cnblogs.com/zcf-blog/p/13198876.html
Copyright © 2020-2023  润新知