zoukankan      html  css  js  c++  java
  • note_Set

    回顾:字典特点:

    1.key是唯一的.
    2.key必须是可以哈希的(不可变数据类型:字符串,元组,数值)
    3.key是无序的.
    3.6中dict的元素有序是解释器的特点,不是python源码的特点.
    xxx.py
    Cpython -> 有序
    Jpython -> 无序

    集合:set

    实际上就是一种特殊的字典.
    所有value都是None的字典,就是集合.

    对比字典和集合的特点:

    字典 集合

    字典 集合
    key唯一 元素唯一
    key可以哈希 元素可以哈希
    key无序 元素无序

    Key唯一 元素唯一
    Key可以哈希 元素可以哈希
    Key无序 元素无序

    如何获取集合?

    1.手动创建集合.
    1.创建空集合
    d = {}
    创建空集合,只有一种方式:调用set函数.
    S = set()
    

    2.创建带元素集合

    S = {1,2,3}
    从可迭代对象中(字符串,列表,元组,字典)创建集合.

    s = set(‘abc’)
    S = set([1,2,3])
    S = set((1,2,3))
    S = set({‘name’:’Andy’,’age’:10})
    

    2.通过方法调用

    -> str
    -> list
    -> set
    

    集合的操作:

    查看集合可用的方法:

    
    [x for x in dir(set) if not x.startswith(‘_’)]
    
    ['add', 'clear', 'copy', 'difference', 'difference_update', 'discard', 'intersection', 'intersection_update', 'isdisjoint', 'issubset', 'issuperset', 'pop', 'remove', 'symmetric_difference', 'symmetric_difference_update', 'union', 'update']
    

    add:如果元素存在,没有做任何动作.
    

    删:

    Pop() 		:依次从集合中弹出一个元素,如果集合为空,报错
    Discard(ele)	:从集合中删除指定的元素,如果不存在,什么都不执行
    Remove(ele)	:从集合中删除指定的元素,如果不存在,报错
    Clear()		:清空
    

    集合的四大常用操作:

    并集:union
    交集:intersection
    差集:difference
    对称差:symmetric_difference
    

    symmetric_difference ^

    改(更新) ####:

    Update	:用二者的并集更新当前集合
    difference_update:用二者的差集更新当前集合
    intersection_update:用二者的交集更新当前集合
    symmetric_difference_update:用二者的对称差集更新当前集合
    

    判断功能:

    Isdisjoint:判断两个集合是否没有交集
    Issubset:判断当前集合是否是后者的子集
    Issuperset:判断后者是否是当前集合的子集
    

    集合基本没有单独取其中元素的需求.

    集合的使用场景:

    1.判断一个元素是否在指定的范围之内.
    2.方便数学上的集合操作.
    并,交,差,对称差
    有简化写法:
    并:|
    交:&
    差:-
    对称差:^

    3.对序列数据类型中的重复元素进行去重

    如果想遍历集合中的元素.
    通常用for循环.

    frozenset:冻结的集合

    最大的特点:不可变.

    
    ['copy', 'difference', 'intersection', 'isdisjoint', 'issubset', 'issuperset', 'symmetric_difference', 'union']
    

    少了添加,更新的方法.

    s = frozenset()
    s = frozenset('abcabc')
    s = frozenset([1,2,3])
    s = frozenset((1,2,3))
    s = frozenset({'name':'Andy','age':10})
    

    集合的四大方法:并,交,差,对称差.
    set,frozenset是否可以混用?
    可以!

    总结:
    如果两种数据类型混用,方法的主调者的类型决定了最终结果的类型.

    frozenset应用场景:

    凡是使用到不可改变的数据的场景,都是可以使用frozenset的.

    set集合的元素:必须是可以哈希的,set本身不是可以哈希.
    但是frozenset是不可变的数据.(可以哈希的),它是可以放到集合中.

    set和frozenset可以互相转换.

  • 相关阅读:
    第六周
    第五周(实验报告)
    第四周(实验报告)
    第三周(实验报告)
    Java第二周学习总结
    第一周
    2019课程总结
    第十四周课程总结
    第十三周总结
    第十二周总结
  • 原文地址:https://www.cnblogs.com/yangchangjie150330/p/10491882.html
Copyright © 2011-2022 走看看