Python 内置数据结构之八(set 运算)

2020-10-22  本文已影响0人  Alexander_Zz

一、集合运算

1.1 并集
并集.png
1.2 交集
交集.png
1.3 差集
差集.png
1.4 对称差集
对称差集.png
1.5 其他集合运算
示例.png

二、集合应用

2.1 共同好友
s1 = {'A','B','C'}
s2 = {'C','B','D'}

print(s1 & s2)
示例.png
2.2 微信群提醒
# 先求所有人好友并集,后判断是否在此并集中,此方案数据量越大越高
s1 = {'1','2','3'}
s2 = {'2','3','4'}

uid = set('4')

print(uid < (s1 | s2))

# 先把所有人组成一个集合,然后判断自己好友是否与其存在交集
u1 = 1
u2 = 2

friend = {1,2,4,5,6,7}

print(friend.isdisjoint({u1, u2}))   # False 表示有交集
示例.png
2.3 权限判断
# 问题一、API 集合 A,用户权限集合 P,用户权限全部包含 API 权限
# 1. A - P = set(), A - P 为空集,说明 P 包含 A
s1 = {'A', 'B', 'C'}
s2 = {'B', 'C', 'D'}
# s2 = {'A', 'B', 'C', 'D'}   若 s2 集合为此值,则返回三个 True
print(s1 - s2 == set())

# 2. A.issubset(P),A 是 P 的子集
print(s1.issubset(s2))

# 3. A & P = A
print((s1 & s2) == s1)

# 问题二、API 集合 A,用户权限集合 P
# 1. A & P != set()
s1 = {'A', 'B', 'C'}
s2 = {'B', 'C', 'D'}
print(s1 & s2 != set())

# 2. A.isdisjoint(P) == False 表示有交集
print(s1.isdisjoint(s2))
问题一.png 问题二.png
2.4 一个总任务列表,存储所有任务。一个完成的任务列表。找出未完成的任务

三、集合练习

3.1 随机产生 2 组各 10 个数字的列表,如下要求
import random
list1 = []
list2 = []

for _ in range(10):
    list1.append(random.randint(10, 20))
    list2.append(random.randint(10, 20))
    
list1 = set(list1)
list2 = set(list2)
print(list1,list2)

print(len(list1 | list2))   # 不同数字个数

a = list1 & list2
print(a, len(a))   # 不同数字

b = list1 ^ list2
print(b, len(b))   # 相同数字
示例.png
上一篇下一篇

猜你喜欢

热点阅读