python 集合

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

 

posted on 2019-07-15 16:04  青柠锦鲤  阅读(226)  评论(0编辑  收藏  举报