zoukankan      html  css  js  c++  java
  • 07集合

      1 """
      2 1.集合是一个序列:无序的,元素不重复的(唯一),可哈希的(不可变的)
      3   可哈希的对象:字符串,元组,整数,数值,不可变的集合frozenset
      4   哈希函数  hash()
      5 集合分两种:
      6 1)可变集合: set()  ,{1, 2, 3}
      7 2)不可变集合:frozenset()
      8 3)集合不支持索引,切片等操作
      9 4.集合的作用1:去重复
     10 5集合支持for循环遍历,因为集合是无序的,所以遍历的结果跟定义时的顺序不一样
     11 6.集合支持成员运算符,in / not in
     12 """
     13 # print(hash("abc"))  # 6318428076096384784
     14 # print(hash(1))  # 1
     15 # print(hash(123456))  # 123456
     16 # # print(hash([1, 2, 3]))  # TypeError: unhashable type: 'list'
     17 # set_1 = set()
     18 # print(set_1)
     19 # print(type(set_1))
     20 # set_2 = frozenset()
     21 # print(set_2)
     22 # print(type(set_2))
     23 # # set()
     24 # # <class 'set'>
     25 # # frozenset()
     26 # # <class 'frozenset'>
     27 # set_3 = set([1, 2, 1, 1, 3])
     28 # print(set_3)  # {1, 2, 3}
     29 # list_1 = [4, 5, 6, 4, 5, 6]
     30 # set_4 = set(list_1)
     31 # print(set_4)  # {4, 5, 6}
     32 # # set_5 = set(1)  # TypeError: 'int' object is not iterable
     33 # set_5 = frozenset(list_1)
     34 # print(set_5)  # frozenset({4, 5, 6})
     35 # set_6 = {"a", 4, 5}
     36 # print(set_6)  # {4, 5, 'a'}
     37 
     38 # set_1 = {1, 2, "abc", "ccc", 5, 6}
     39 # for i in set_1:
     40 #     print(i)
     41 # print(1 in set_1)  # True
     42 # print(10 in set_1)  # false
     43 """
     44 可变集合,添加元素:
     45 1.内建方法, .add(元素)
     46 """
     47 # set_1.add(10)
     48 # print(set_1)  # {1, 2, 'ccc', 5, 6, 10, 'abc'}
     49 # set_1.add(10)  # 集合中的元素必须是唯一的
     50 # print(set_1)  # print(set_1)
     51 """
     52 可变集合,删除元素:
     53 1.内建方法,remove(被删除的元素),被删元素如不存在,报错
     54 2.内建方法, discard(被删除的元素),被删元素如不存在,不报错
     55 3.内建方法,pop()  随机删除一个元素
     56 4.内建方法,clear()  清空集合中的元素
     57 5.关键字  del set_1  删除集合对象
     58 """
     59 # set_1.remove("abc")
     60 # print(set_1)  # {1, 2, 5, 6, 'ccc', 10}
     61 # set_1.discard("ccc")
     62 # print(set_1)  # {1, 2, 5, 6, 10}
     63 # # set_1.remove("abc")  # KeyError: 'abc'
     64 # set_1.discard("abc")  # 不报错,什么都不做
     65 # print(set_1)
     66 # set_1.pop()  # 随即删除集合中的某个元素
     67 # print(set_1)
     68 # set_1.clear()
     69 # print(set_1)  # set()
     70 # del set_1
     71 # # print(set_1)  # NameError: name 'set_1' is not defined
     72 
     73 """
     74 集合之间支持 联合(|).交集(&).差补(-)和对称差分(^)的操作
     75 联合(|):集合a的元素加上集合b的元素,合成一个新的集合
     76 交集(&):共同属于集合a与集合b的元素
     77 差补(-):只属于集合a 或 只属于
     78 对称差分(^):只属于集合a  和  只属于集合b  的元素
     79 运算结果的集合类型取决于运算符左侧的集合类型。
     80 """
     81 # set_1 = set('abchiklm')  # 可变的集合
     82 # frozenset_1 = frozenset("abcdefg")  # 不可变的集合(冻结的集合)
     83 # print(set_1)
     84 # print(frozenset_1)
     85 # {'h', 'l', 'c', 'm', 'a', 'b', 'k', 'i'}
     86 # frozenset({'f', 'd', 'c', 'a', 'g', 'b', 'e'})
     87 # print(set_1 | frozenset_1)
     88 # print(set_1 & frozenset_1)
     89 # print(frozenset_1 ^ set_1)
     90 # print(frozenset_1 - set_1)
     91 # print(set_1 - frozenset_1)
     92 # {'h', 'f', 'l', 'd', 'c', 'e', 'm', 'a', 'g', 'b', 'k', 'i'}
     93 # {'b', 'c', 'a'}
     94 # frozenset({'h', 'f', 'l', 'd', 'e', 'm', 'g', 'k', 'i'})
     95 # frozenset({'d', 'f', 'e', 'g'})
     96 # {'h', 'l', 'm', 'k', 'i'}
     97 """
     98 Python  另外提供了仅适用于set集合的操作符,包括
     99 |=(联合更新).&=(交集更新).-=(差补更新)和^=(对称差分更新) 
    100 """
    101 # set_1 = {1, 2, 3, 4, 5}
    102 # frozenset_1 = {3, 4, 5, 6, 7, 8}
    103 # set_1 -= frozenset_1  # {1, 2}
    104 # print(set_1)
    105 # frozenset_1 -= set_1  # frozenset_1  ,不可变,不管做什么操作都不变
    106 # print(frozenset_1)  # {3, 4, 5, 6, 7, 8}
    107 # set_2 = {3, 4, 5, 6, 7}
    108 # set_1 |= set_2
    109 # print(set_1)  # {1, 2, 3, 4, 5, 6, 7}
    110 # set_1 &= set_2
    111 # print(set_1)  # {3, 4, 5, 6, 7}
    112 # set_1 -= set_2
    113 # print(set_1)  # set()
    114 # set_1 = set([2, 2, "a", "a", 5])
    115 # set_1 ^= set_2
    116 # print(set_1)  # {2, 3, 4, 6, 7, 'a'}
    117 # set_1 &= set_2
    118 # print(set_1)  # {3, 4, 6, 7}
    119 
    120 """
    121 张三,李四,王五,赵六,郝七  (set_a)
    122 语文成绩:王五,赵六,郝七,郭八,少九  (set_b)
    123 1.求  两个兴趣组一共有哪些人?  set_a | set_b
    124 2.求  既在语文兴趣组又在数学兴趣组的人是哪些  set_a & set_b
    125 3.求  把只在语文兴趣组中的学生留下  set_a - set_b
    126 4.求  把只在数学兴趣组中的学生留下  set_b - set_a
    127 5.求  只报了语文兴趣组  和 只报了数学兴趣组  的学生共有哪些人  set_a^set_b
    128 """
    129 """
    130 集合中可以判断一个集合是不是另一个集合的子集或超集,结果为布尔值
    131 a < b  a是不是b的子集(小于)
    132 a > b  a是不是b的超集(大于)
    133 a <= b a是不是b的非严格子集(允许a和b的值相等)
    134 a >= b a是不是b的非严格超集(允许a和b的值相等)
    135 """
    136 # a = {1, 2, 3, 4, 5}
    137 # b = {3, 5}
    138 # print(a < b)  # True
    139 # print(b < a)  # True
  • 相关阅读:
    JVM调优之优化延迟
    Datagridview列自适应宽度和数据居中显示
    C# winform格式化Json
    Winform将select数据写入datagridview
    .NET使用NPOI从datagridview导出excel
    理解大数据
    ORACLE_BASE和ORACLE_HOME的区别
    tabpage平分tabcontrol
    WinForm设置主窗体为固定大小(禁止调整大小)
    加Application.DoEvents可以防止界面“未响应”
  • 原文地址:https://www.cnblogs.com/zh1127487137/p/12552770.html
Copyright © 2011-2022 走看看