一、定义:
二、基本操作:
三、运算:
交集&, 并集|, 补集-, 对称补集^, 子集< 超集>
四、集合推导式:
五、固定集合 frozenset
六、基本代码:
# 1. 创建空集合 s01 = set() # 2. 创建具有默认值的集合 s01 = {1,2,3,4} # print(type(s01)) # 3. 其他容器 --> 集合 s02 = set("abcdace") s02 = set([1,7,56,8,7,8]) # 集合 --> 其他容器 l02 = list(s02) t02 = tuple(s02) # 4. 添加 s02.add("a") s02.add("b") s02.add("c") print(s02)# {1, 7, 8, 'c', 'b', 56, 'a'} # 5. 删除 # s02.remove(7) # s02.remove(9) # 如果该元素不存在,则错误. # if 9 in s02: # s02.remove(9) s02.discard("a") # 如果该元素不存在,不会错误. print(s02) # 6. 获取所有元素 for item in s02: print(item) # 7. 计算 s03 = {1,2,3} s04 = {2,3,4} # 交集 s05 = s03 & s04 print(s05)# {1, 2} # 并集 s05 = s03 | s04 print(s05) # {1, 2, 3, 4} # 补集 s05 = s03 ^ s04 print(s05) # {1, 4} s05 = s03 - s04 print(s05) # {1} s05 = s04 - s03 print(s05) # {4} # 子集 超集 s06 = {1,2,3} s07 = {1,2} re = s07 < s06 # True 说明s07 是 s06 的子集 re = s06 > s07 # True 说明s06 是 s07 的超集 print(re) # 相同 不同 s08 = {1,2,3} s09 = {1,2,3} re = s08 != s09 # True 说明s08 与 s09 相同 print(re)
""" 固定集合 """ f01 = frozenset([1,2,2,4]) print(type(f01)) print(f01)
七、实例:
1、练习1:在控制台中随意录入多个字符串.按q退出,再显示所有不重复的字符串
set_target = set() while True: str_input = input("请随意输入:") if str_input == "q": break set_target.add(str_input) for item in set_target: print(item)
2、练习2:经理:[曹操,刘备,孙权] 技术员:[曹操,刘备,张飞,关羽]
1. 即是经理也是技术员的有谁?
2. 是经理,但不是技术员的有谁?
3. 是技术员,但不是经理的有谁?
4. 张飞是经理吗?
5. 身兼一职的都有谁?
6. 经理和技术员总共有多少人?
list01 = ["曹操","刘备","孙权"] list02 = ["曹操","刘备","张飞","关羽"] set01 = frozenset(list01) set02 = frozenset(list02) #1. 即是经理也是技术员的有谁? print(set01 & set02) #2. 是经理,但不是技术员的有谁? print(set01 - set02) #3. 是技术员,但不是经理的有谁? print(set02 - set01) #4. 张飞是经理吗? print("张飞" in set01) #5. 身兼一职的都有谁? print(set02 ^ set01) #6. 经理和技术员总共有多少人? print(len(set02 | set01))