当前位置 博文首页 > zy010101博客:Python——集合

    zy010101博客:Python——集合

    作者:[db:作者] 时间:2021-06-11 18:08

    集合(set)是一个无序的不重复元素序列。如下所示:

    my_set = {1, 2, 3, 4, 1, 2, 3, 4}       # 集合,满足无序性,互异性,确定性。
    print(my_set)   
    

    程序的输出结果如下所示:

    ?需要注意的是,创建一个空集合必须使用?set()?而不是?{ },因为?{ }?是用来创建一个空字典。

    empty_set = set()
    print(empty_set)

    这段代码的执行结果如下所示:

    集合中的元素不能是可变数据类型,但是集合本身是可变数据类型。

    集合基本的操作函数

    s = set()
    s.add("123")        # 增加元素
    s.add("456")
    c_list = {}
    # s.add(c_list)   # set的元素不能是可变类型
    print(s)
    s.remove("123")     # 删除元素
    print(s)
    s.update("123")     # 注意该函数的参数必须是一个可迭代对象
    print(s)
    s.pop()             # 弹出顶部元素,但是集合是无序的。
    print(s)

    程序执行结果:

    {'123', '456'}
    {'456'}
    {'1', '2', '456', '3'}
    {'2', '456', '3'}

    这些操作其他的可变数据类型也都有,前面说过这里的集合满足无序性,互异性,确定性。也就是说set()几乎就是数学上的集合。因此集合重点操作应该在求交集,并集,补集上,而不是前面所说的。

    集合的交并补运算

    s1 = {1, 3, 5, 7, 9}
    s2 = {2, 4, 6, 8, 10}
    
    print(s1 & s2)     # 求交集
    print(s1 | s2)     # 求并集
    s3 = s1 | s2       # s3集合
    print(s3 - s1)     # 子集s1在s3中的绝对补集(求补集)
    s4 = {3, 6, 9}
    print(s3 ^ s4)     # 求两个集合的交集的补集
    print(s1 ^ s2)
    print(s3 > s2)     # 判断是否是超集和子集关系
    print(s1 < s2)
    

    程序执行结果:

    set()
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    {2, 4, 6, 8, 10}
    {1, 2, 4, 5, 7, 8, 10}
    {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    True
    False

    我们在使用集合的时候,基本是使用集合的特性来进行去重。这样比较简单。

    下一篇:没有了