# set不支持 索引, 切片, 重复, 连接,, 因为set是无序的;
s = {1, 2, 3, 1, 2, 3}
print(s)
##{1, 2, 3}
# 列表去重
li = [1, 2, 3, 1, 2, 3]
print(list(set(li)))
##{1, 2, 3}
s1 = {1, 2, 3}
s2 = {1, 2, 4}
print("并集:", s1.union(s2))
##并集: {1, 2, 3, 4}
print("交集:", s1.intersection(s2))
##交集: {1, 2}
# 求交集时, 把s1的值更新为交集的值;
s1.intersection_update(s2)
print(s1)
##{1, 2}
print(s1.difference(s2)) # s1-instersection(s1,s2)
##{3}
print(s2.difference(s1)) # s2-intersection(s1,s2)
##{4}
# 求差集时, 把s2的值更新为差集的值;
print(s2.difference_update(s1)) # s2-union(s1,s2)
##None
print(s2)
##{4}
s1 = {1, 2, 3}
s2 = {1, 2, 4}
# 对等差分;
print(s1.symmetric_difference(s2))
##{3, 4}
print(s1 | s2)
##{1, 2, 3, 4}
print(s1 & s2)
##{1, 2}
print(s1 - s2)
##{3}
print(s2 - s1)
##{4}
s1 = {1, 2, 3}
s2 = {1, 2, 4}
# s1是s2的子集?
print(s1.issubset(s2))
##False
# s1是s2的父集?
print(s1.issuperset(s2))
##False
# s1和s2没有交集么? 如果没有交集True,否则返回False;
print(s1.isdisjoint(s2))
##False
import random
li1 = []
li2 = []
for i in range(10):
li1.append(random.randint(10,20))
li2.append(random.randint(10,20))
print(li1, li2)
s1 = set(li1)
s2 = set(li2)
print("20个数字中共有%s个不同的数字" %(len(s1 | s2)))
sy_set = s1.symmetric_difference(s2)
print(" 2组中,不重复的数字有%s个, 分别是%s" %(len(sy_set), sy_set))
inster_set = s1 & s2
print("2组中,重复的数字有%s个,分别是%s" %(len(inster_set), inster_set))
"""
NAME : 集合的练习_华为笔试.py
Author: W
Date: 04/05/18
Connect: M.@qq.com
Desc:
(华为机试题)题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,
他先用计算机生成了N个1到1000之间的随机整数(N≤1000), N是用户输入的,对于
其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应
着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺
序去找同学做调查。请你协助明明完成“去重”与“排序”的工作;
count: 100
1, 4, 34,
# 在1-1000之间随机生成10个数字
random.sample(range(1,1000), 10)
"""
import random
N = int(input("N:"))
s = set()
for i in range(N):
num = random.randint(1, 1000)
s.add(num)
print(sorted(s))