集合,集合的练习

# 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))  ##随机生成10个10-20之间的数加到列表li1中
    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)  ##对等差分把s1和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:  [email protected]
Desc:
(华为机试题)题目描述
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,
他先用计算机生成了N个1到1000之间的随机整数(N≤1000), N是用户输入的,对于
其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应
着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺
序去找同学做调查。请你协助明明完成“去重”与“排序”的工作;


count: 100


1, 4, 34,


# 在1-1000之间随机生成10个数字
random.sample(range(1,1000), 10)


"""
import random




# 将input接收的str,清值转化为int类型;
N = int(input("N:"))
# list, set, tuple(x)

# 定义空集合时, 不能为s={}, 应该是s = set()
s = set()

for i in range(N):  # 4, (0,1,2,3)
    num = random.randint(1, 1000)
    # 将随机生成的数加入到集合中;
    s.add(num)
# 对集合进行排序;
print(sorted(s))

猜你喜欢

转载自blog.csdn.net/qq_41661056/article/details/80188729