1.集合
集合是一个无序不重复元素的集。
集合中的元素必须是不可变类型。
2.创建集合
创建【空集合】:one_set = set() # 注意:只能用set()。{}是空字典的创建方式。
创建非空集合:one_set = {“orange”, “banaba”, “pear”, “banana”} # 创建集合时,会自动删除重复的元素。
所以,如果这个时候打印one_set ,可能会输出:{'banana', 'pear', 'orange'}。
由于set是无序的,每一次打印出来的元素个数跟值是一致的,但位置未必一致。
将【列表】转化为集合:
将【元组】转化为集合:
将【字典】转化为集合:
☆集合最主要的两个特征就是:去除重复,运算
3.集合运算
数学表达式:
one_set = {"苹果", "橘子", "香蕉", "凤梨", "香蕉"} two_set = set(["苹果", "香蕉", "樱桃", "杏子", "柚子"]) print(one_set, two_set, sep=" *** ") print(f"one_set与two_set的交集是{one_set&two_set}") print(f"one_set与two_set的并集是{one_set|two_set}") print(f"one_set对two_set的差集是{one_set-two_set}") print(f"two_set与one_set的差集是{two_set-one_set}")
{'苹果', '橘子', '凤梨', '香蕉'} *** {'杏子', '柚子', '樱桃', '香蕉', '苹果'} one_set与two_set的交集是{'苹果', '香蕉'} one_set与two_set的并集是{'杏子', '橘子', '凤梨', '柚子', '樱桃', '香蕉', '苹果'} one_set对two_set的差集是{'橘子', '凤梨'} two_set与one_set的差集是{'杏子', '柚子', '樱桃'}
集合方法:
one_set = {"苹果", "橘子", "香蕉", "凤梨", "香蕉"} two_set = set(["苹果", "香蕉", "樱桃", "杏子", "柚子"]) print(one_set, two_set, sep=" *** ") print(f"one_set与two_set的交集是{one_set.intersection(two_set)}") print(f"one_set与two_set的并集是{one_set.union(two_set)}") print(f"one_set对two_set的差集是{one_set.difference(two_set)}") print(f"two_set与one_set的差集是{two_set.difference(one_set)}")
{'香蕉', '凤梨', '苹果', '橘子'} *** {'香蕉', '苹果', '杏子', '柚子', '樱桃'} one_set与two_set的交集是{'香蕉', '苹果'} one_set与two_set的并集是{'橘子', '香蕉', '苹果', '杏子', '凤梨', '柚子', '樱桃'} one_set对two_set的差集是{'凤梨', '橘子'} two_set与one_set的差集是{'樱桃', '杏子', '柚子'}
对称差集:
print(f"两集合的对称差集是{one_set.symmetric_difference(two_set)}") print(f"两集合的对称差集是{two_set.symmetric_difference(one_set)}")
两集合的对称差集是{'凤梨', '樱桃', '杏子', '橘子', '柚子'} 两集合的对称差集是{'樱桃', '杏子', '橘子', '柚子', '凤梨'}
注意点:
# 注意: # intersection,difference,symmetric_difference # 与 # intersection_update,difference_update,symmetric_difference_update # 的主要区别在于: # 上面的方法是返回一个新的集合, # 下面的方法是在原始集合的基础上进行操作,没有返回值 three_set = one_set.intersection(two_set) one_set.intersection_update(two_set) three_set = one_set.difference(two_set) one_set.difference_update(two_set) one_set.symmetric_difference(two_set) one_set.symmetric_difference_update(two_set)
4.集合添加、删除元素
# 添加一个元素 one_set.add("西瓜") # 添加多个元素(列表,元组,字典等) # 多个元素之间用逗号隔开 one_set.update(two_set, ("榴莲", "荔枝")) # 删除指定元素discard/remove # 随意删除一个元素pop # 当指定元素不存在时,discard不会报错,remove会报错 one_set.discard("西瓜") one_set.remove("苹果") one_set.pop() # 清空集合 one_set.clear()
5.父集、子集的判断
# A.issuperset(B) 判断A是否是B的父集,是True,否False # A.issubset(B) 判断A是否是B的子集,是True,否False # A.isdisjoint(B) 判断两个集合是否包含相同的元素,如果包含False,不包含True ☆这里容易搞反哦 one_set = {1, 3, 5, 7, 9} two_set = {3, 5, 7} print(one_set.issuperset(two_set)) # True print(two_set.issubset(one_set)) # True print(one_set.isdisjoint(two_set)) # False