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

 

posted @ 2020-03-23 16:02  吹散思绪  阅读(88)  评论(0编辑  收藏  举报