python 集合

########################### 集合定义 ##########################

# 集合里面的元素是不可重复的;
s = {1, 2, 3, 4, 1, 2, 3}
print(s, type(s))

s1 = {1}
print(s1, type(s1))

# *******如何定义一个空集合?
s2 = {}   # 默认情况是dict, 称为字典
print(s2, type(s2))

# 定义一个空集合.
s3 = set([])
print(s3, type(s3))

# 集合应用1: 列表去重
li = [1,2,3,1,2,3]
print(list(set(li)))

############################ 集合特性 #######################
# 集合支持的特性只有 成员操作符, (索引, 切片, 重复, 连接,均不支持);

s = {1,2,3}
print(1 in {1,2,3})
print(1 not in {1,2,3})


# for循环
for i in s:
    print(i, end='|')

print()
# for+ index
for i, v in enumerate(s):
    print("index: %s, value:%s" %(i, v))

########################### 集合的常用方法 ################################

# s = {6, 7, 3, 1,2,3}
# # 可变, 无序数据类型
# #       - 添加的顺序, 和在集合中存储的顺序不同;


#
# # 增加:
# s.add(8)
# print(s)


# # 增加多个元素
# s.update({7,8,9})
# print(s)


#
# # 删除
# s.pop()
# print(s)

#
#
# # 删除指定的元素
# s.remove(2)
# print(s)


# 交集, 并集, 差集
s1 = {1, 2, 3}
s2 = {2, 3, 4}

#  并集
print("并集:",  s1.union(s2))
print("并集:",  s1 | s2)

# 交集
print("交集:", s1.intersection(s2))
print("交集:", s1 & s2)

# 差集
print("差集:", s1.difference(s2))   # s1- (s1&s2)
print("差集:", s2.difference(s1))   # s2- (s1&s2)
print("差集:",s1-s2)
print("差集:",s2-s1)


# 对等差分: 并集-交集
print("对等差分:", s1.symmetric_difference((s2)))
print("对等差分:", s1^s2)


s3 = {1,2}
s4 = {1,2,3}
print(s3.issubset(s4))   #s3 是 s4 子集
print(s3.issuperset(s4)) #判断超集
print(s3.isdisjoint(s4)) #如果两个集合有一个空交集,返回 True

########################### 随机生成 1000 以内的 N 个数 并排序 ######################

import random
# 先 生成n个随机数
# 列表, 集合也可以, 优先选择集合,
s = set([])
for i in range(int(input('N:'))):
    # num = random.randint(1,1000)
    # s.add(num)
    s.add(random.randint(1,1000))
print(sorted(s))

######################### 集合应用案例 #########################

# 1. 求共同好友: 张鑫和杨月,
# zx = {'001', '002', '003'}
#  yy = {'001', '005', '002'}
# zx & yy


# 2. 微信群提醒:
#       xxxx与群里其他人都不是微信好友关系
# 群组: s1 s2 s3
#  s1 = {s4, s5, s6}
#  s2 = {s1, s3, s6}

#print( s3 in (s1 | s2))


# 3. 权限判断:
#       网站: 权限: s1 = {A,B, C}, 用户westos目前的权限为s2 = {A C},

# 判断: 判断westos权限是否为要求权限的父集.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值