python:集合(set)的定义和常用操作

什么是集合

集合(set)是一个无序的、元素不允许重复的数据容器,与列表或元组不同,集合不允许重复值,也就是说集合中的每个元素都必须是唯一的。集合是可变的,这意味着在创建集合后你可以添加或移除元素。

集合的特点:

  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 数据是无序的(不支持下标索引)
  • 不允许重复数据存在
  • 可以修改(增加或删除元素)
  • 支持for循环遍历
  • 集合的定义

    语法

    # 定义集合字面量
    {元素, 元素, ..., 元素}
    
    # 定义集合变量
    变量名称 = {元素, 元素, ..., 元素}
    
    # 定义空集合
    变量名称 = set()
    

    示例

    示例1:定义空集合

    a = set()
    print(a)
    print(type(a))
    

    运行结果:

    示例2:定义集合字面量

    {'hello', 'world', 1, 2}
    

    示例3:定义集合变量

    a = {'hello', 'world', 1, 2}
    print(a)
    print(type(a))
    

    运行结果:

    示例4:集合中的元素不重复

    a = {'hello', 'world', 1, 2, 1}
    print(f'集合a的内容是:{a}')
    print(f'集合a的元素个数是:{len(a)}')
    print(type(a))
    

    运行结果:

    集合的常用操作

    因为集合是无序的,所以集合不支持通过下标索引访问。

    集合允许修改。

    添加新元素

    语法

    集合.add(元素)
    

    将指定元素添加到集合内。如果该元素已经存在于集合中,则集合保持不变。

    示例1:添加的元素不重复

    my_set = {'hello', 'world'}
    my_set.add('python')
    my_set.add('java')
    print(f'添加新元素后,集合的内容是:{my_set}')
    

    运行结果:

    示例2:添加重复的元素:原集合不会改变

    my_set = {'hello', 'world', 'python'}
    print(f'添加新元素前,集合的内容是:{my_set}')
    
    my_set.add('python')
    print(f'添加新元素后,集合的内容是:{my_set}')
    

    运行结果:

    移除元素

    语法

    集合.remove(元素)
    

    将指定元素从集合中移除。如果元素不存在,将抛出KeyError。

    示例1:正常移除元素

    my_set = {'hello', 'world', 'python'}
    print(f'移除元素前,集合的内容是:{my_set}')
    
    my_set.remove('python')
    print(f'移除元素后,集合的内容是:{my_set}')
    

    运行结果:

    示例2:移除元素,但元素在集合中不存在,抛出KeyError

    my_set = {'hello', 'world', 'python'}
    print(f'移除元素前,集合的内容是:{my_set}')
    
    my_set.remove('java')
    print(f'移除元素后,集合的内容是:{my_set}')
    

    运行结果:

    从集合中随机移除元素

    语法

    集合.pop()
    

    从集合中随机移除并返回这个元素。如果集合为空,抛出KeyError。

    示例1:正常随机移除一个元素

    my_set = {'hello', 'world', 'python'}
    print(f'移除元素前,集合的内容是:{my_set}')
    
    element = my_set.pop()
    print(f'移除的元素是:{element},随机移除元素后,集合的内容是:{my_set}')
    

    一次运行的结果:

    示例2:集合为空,随机移除一个元素,抛出KeyError

    my_set = set()
    print(f'移除元素前,集合的内容是:{my_set}')
    
    my_set.pop()
    print(f'随机移除元素后,集合的内容是:{my_set}')
    

    运行结果:

    清空集合

    语法

    集合.clear()
    

    从集合中移除所有元素。

    示例

    my_set = {'hello', 'world', 'python'}
    print(f'清空集合前,集合的内容是:{my_set}')
    
    element = my_set.clear()
    print(f'清空集合后,集合的内容是:{my_set}')
    

    运行结果:

    取两个集合的差集

    语法

    集合1.difference(集合2)
    

    取出集合1 和 集合2 的差集(集合1中有而集合2中没有的)。
    返回:一个新的集合,集合1 和 集合2 不变。

    示例

    set1 = {1, 2, 3, 4, 5}
    set2 = {3, 4, 5, 6, 7}
    
    set3 = set1.difference(set2)
    set4 = set2.difference(set1)
    
    print(f'取差集后,原有set1的内容是:{set1}')
    print(f'取差集后,原有set2的内容是:{set2}')
    print(f'set1和set2的差集是:{set3}')
    print(f'set2和set1的差集是:{set4}')
    

    运行结果:

    消除两个集合的差集

    语法

    集合1.difference_update(集合2)
    

    功能:对比集合1 和 集合2,在集合1内,删除和集合2相同的元素。

    结果:集合1被修改,而集合2不变。

    示例

    set1 = {1, 2, 3, 4, 5}
    set2 = {3, 4, 5, 6, 7}
    
    set1.difference_update(set2)
    
    print(f'消除差集后,set1的内容是:{set1}')
    print(f'除差集后,set2的内容是:{set2}')
    

    运行结果:

    两个集合合并

    语法

    集合1.union(集合2)
    

    功能:将集合1 和 集合2组成新集合。

    结果:得到新集合,集合1 和 集合2不变。

    示例

    set1 = {1, 2, 3, 4, 5}
    set2 = {3, 4, 5, 6, 7}
    
    set3 = set1.union(set2)
    
    print(f'set1 和 set2 合并后的集合为:{set3}')
    print(f'合并后,原有集合set1为:{set1}')
    print(f'合并后,原有集合set2为:{set2}')
    

    运行输出:

    统计集合的元素数量

    语法

    len(集合)
    

    示例:赋值时没有重复元素

    set1 = {1, 2, 3, 4, 5}
    num = len(set1)
    print(f'集合set1的元素数量是:{num}')
    

    运行结果:

    示例:赋值时有重复元素

    set1 = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5}
    num = len(set1)
    print(f'集合set1的元素数量是:{num}')
    

    运行结果:

    集合的遍历

    集合没有索引下标,所以不支持while循环遍历,但可以用for循环遍历。

    set1 = {1, 2, 3, 4, 5}
    for element in set1:
        print(element)
    

    运行结果:

    作者:听海边涛声

    物联沃分享整理
    物联沃-IOTWORD物联网 » python:集合(set)的定义和常用操作

    发表回复