• 9.集合set和frozenset冻结集合函数


    集合set

    set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以在set中没有重复的key。

    集合中的元素要求是不可变的并且还是唯一的,我们就利用它是唯一来做去重

    set可以看成数学意义上的无序无重复的集合,因此,两个set可以做数学意义上的交集、并集等操作。

    一、集合特点-去重

    lst=[1,2,3,2,3,4,2,5,6,2]  #定义列表lst
    print(lst)                 #输出列表
    print(set(lst))            #lst转化为集合输出(去重)
    print(list(set(lst)))      #去重后的集合转化为列表输出
    结果:
    [1, 2, 3, 2, 3, 4, 2, 5, 6, 2]
    {1, 2, 3, 4, 5, 6}
    [1, 2, 3, 4, 5, 6]
    

    二、集合的基本操作-交集

    交集、并集、差集、反交集、子集、超集

    set={1,2,3}              #定义集合set
    set1={2,3,4}             #定义集合set1
    set2=set | set1          #并集-合并集合
    set3=set-set1            #差集-set中的单独元素
    set4=set ^ set1          #反交集-两个集合中的单独元素
    set5=set < set1          #set是set1的子集吗?输出布尔值
    set6=set > set1          #set是set1的超集吗?输出布尔值
    print(set & set1)        #交集-两个集合中的共有元素
    print(set2)
    print(set3)
    print(set4)
    print(set5)
    print(set6)
    结果:
    {2, 3}
    {1, 2, 3, 4}
    {1}
    {1, 4}
    False
    False
    
    

    三、集合的增删改查

    1.增加⭐

    s = {"罗志祥", '文章', "周星驰"}
    s.add("何炅")
    print(s)
    s.add("何炅")            # 重复的内容不会被添加到set集合中
    print(s)
    s1 = {"刘德华", '张学友', "张柏芝"}
    s1.update("陈冠希")      # 迭代更新
    print(s1)
    s1.update(["唐韵", "林逸","林逸"])
    print(s1)
    
    结果:
    
    {'周星驰', '罗志祥', '何炅', '文章'}
    {'周星驰', '罗志祥', '何炅', '文章'}
    {'张柏芝', '刘德华', '冠', '张学友', '陈', '希'}
    {'张柏芝', '刘德华', '冠', '林逸', '张学友', '陈', '希', '唐韵'}
    

    2.删除⭐

    随机删除、指定元素删除、清空集合

    s = {"周星驰", '周星星', "周瑞发","张学友", "杨虎城"}
    item = s.pop()       # 随机弹出⼀个.
    print(s)
    print(item)
    s.remove("周星星")    # 直接删除元素
    # s.remove("刘亦菲")  # 不存在这个元素. 删除会报错
    print(s)
    s.clear()            # 清空set集合.需要注意的是set集合如果是空的. 打印出来是set() 因为要和dict区分的.
    print(s)             # set()
    
    结果:
    
    {'周星星', '张学友', '周瑞发', '杨虎城'}
    周星驰
    {'张学友', '周瑞发', '杨虎城'}
    set()
    

    3.修改⭐

    set集合中的数据没有索引. 也没有办法去定位⼀个元素. 所以没有办法进⾏直接修改.
    我们可以采⽤先删除后添加的⽅式来完成修改操作

    s = {'阿斯顿','阿瑟东','阿三的'}
    s.remove('阿三的')
    s.add('周星星')
    print(s)
    
    结果:
    {'周星星', '阿瑟东', '阿斯顿'}
    

    4.查询⭐

    # set是⼀个可迭代对象. 所以可以进⾏for循环
    
    s = {'阿斯顿','阿瑟东','阿三的'}
    for i in s:
     print(i)
    
    结果:
    阿斯顿
    阿瑟东
    阿三的
    

    四、frozenset函数

    描述

    frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

    语法

    frozenset() 函数语法:

    class frozenset([iterable])
    

    参数

    • iterable -- 可迭代的对象,比如列表、字典、元组等等。

    返回值

    返回新的 frozenset 对象,如果不提供任何参数,默认会生成空集合。

    实例

    以下实例展示了 frozenset() 的使用方法:

    a=frozenset(range(10))                #生成一个新的不可变集合
    print(a)
    b=frozenset('runoob')                 #创建不可变集合
    print(b)
    c=frozenset(['终止','啊实打实','阿萨'])  #通过frozenset把集合变得可哈希(把不可变集合作为字典的key)
    print(c)
    dic={c:'123'}
    print(dic)
    
    结果:
    frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
    frozenset({'r', 'b', 'u', 'o', 'n'})
    frozenset({'终止', '啊实打实', '阿萨'})
    {frozenset({'终止', '啊实打实', '阿萨'}): '123'}
    
  • 相关阅读:
    《时间的朋友》2017跨年演讲:观后感
    如何实现目标?
    不患贫而患不均
    科学地定目标(附我的目标)
    书单:我的“基本书”
    你只有非常努力,才能看起来毫不费力
    买书?买知识?
    论知识与技能
    【读书笔记】《代码不朽》
    【工作实践】如何创新?
  • 原文地址:https://www.cnblogs.com/yangte/p/13473983.html
Copyright © 2020-2023  润新知