集合
集合用符号{}
集合里面的元素可重复
s = {1,1,2,3,3,4,5,6,7,8,8,8}
print(s,type(s)) ##输出的时候,自动将重复的元素去掉
定义一个空集合
s1 = {} #默认情况下是dict(字典)
print(type(s1))
s2 = set([]) ##将空列表转换为集合
print(type(s2))
列表的快速去重 (先将列表转换为集合,去掉重复元素,再转换为列表)
li = [1,1,2,3,3,4,5,6,7,8,8,8]
print(list(set(li)))
集合中常用的方法
集合是一个可变的数据类型
添加顺序和存储数据的顺序是不同的
s = {6,7,8,9,2,3,1,4,5}
print(s)
添加
s.add(10)
s.add(0)
print(s)
增加多个元素
s = {6,7,8,9,2,3,1,4,5}
s.update({7,12,13,14})
print(s)
删除
a = s.pop()
print(s)
print(a)
删除指定元素
s = {6,7,8,9,2,3,1,4,5}
a = s.remove(5)
print(a)
print(s)
排序
s1 = {4,8,1}
print(sorted(s1))
并集
s1 = {4,8,1}
s2 = {4,2,1}
print('并集:',s1.union(s2))
print('并集:',s1|s2)
交集
print('交集:', s1.intersection(s2))
print('交集:', s1 & s2)
差集
# # s1和s2的差集:s1中有哪些s2中没有的元素
print('差集:', s1.difference(s2))
print('差集:', s1 - s2)
对等差分:并集 - 交集
print('对等差分',s1.symmetric_difference(s2))
print('对等差分',s1 ^ s2)
s3是否是s4的子集
s3 = {'redhat','westos','python'}
s4 = {'redhat','westos','linux'}
print(s3.issubset(s4))
print(s3.isdisjoint(s4)) ##两个集合是不是不相交
集合的特性
集合支持的特性 成员操作符 for循环
s = {1,2,3}
print(1 in s)
print(1 not in s)
for i in s:
print(i,end='') ##不换行打印
print() ##打印空白行
print('hello hedan')
练习02
华为机测题:
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性
他先用计算机生成了N个1~1000之间的随机整数(N<=1000)
,N是用户输入的,对于
其中重复的数字,只保留一个,把其余相同的数字去掉,
不同的数对应着不同的学生的学号,
然后再把这些
数从小到大排序,按照排好的顺序去找同学做调查,
请你协助明明完成“去重”与排序工作
sorted()
方1:
import random
s = set({})
N = int(input('N:'))
for i in range(N):
num = random.randint(1,1000)
s.add(num)
print(sorted(s))
方二:
import random
list=[]
NUM = int(input('输入个数:'))
i = 1
while i<=NUM:
num = random.randint(1,1000)
i+=1
list.append(num)
print(sorted(set(list)))
python中常用的内置方法
>>> min(5,7,2) ##最小值
2
>>> max(5,7,2) ##最大值
7
>>> sum(range(10)) ##10以内数之和(不包含10)
45
>>> sum(range(1,5))
10
>>> sum(range(1,101,2)) ##奇数之和
2500
>>> sum(range(2,101,2)) ##偶数之和
2550
枚举:返回索引值和对应的value
enumerate:是python的内置函数,在for循环中得到计数的用法
例如:
for i, v in enumerate('hello'):
# print(i,v)
print(i ,'---->' ,v )
zip
zip()接受一系列可迭代对象作为参数,将不同对象中相对应的元素打包成一个元组(tuple),
返回由这些元组组成的list列表,如果传入的参数的长度不等,则返回的list列表的长度和传入参数
中最短对象的长度相同
例如:
s1 = '123'
s2 = 'abc'
for i in zip(s1,s2):
print(i)
for i in zip(s1,s2):
print('-'.join(i))