python中有列表、元组、集合、字典这四种可以存放多个数据元素的集合,他们在总体功能上都起着存放数据的作用,却都有着各自的特点。本片文章中我们会对集合的用法做详细说明。
演示环境:
python3.6
pycharm中的python3.6
集合(set):存储元素不重复、无序数据类型,只支持成员操作赋、for循环迭代、枚举。
无序的数据类型,添加顺序和在集合中的存储顺序不一样
!!不支持索引,重复,连接,切片
第一部分:
1.1定义:
##当集合内有重复元素时,输出集合会自动将重复元素去掉
s = {1,2,4,5}
print(type(s))
s1 = {}
print(type(s1)) ##空字典定义
s1 = set([])
print(type(s1)) ###空集合定义
1.2去重:
li = [1,2,3,1,1,2,3]
print(list(set(li))) ###去重 ##将其转化为集合类型去重,然后再转为列表类型输出
1.3成员操作符:
s = {6,7,8,9}
print(i in s) ##返回False
1.4迭代:
for i in s:
print(i) ##迭代输出其内容
1.5枚举: ###返回对应元素与其索引值
for i,v in enumerate(s):
print('index: %s,value: %s' %(i,v))
1.6增、删:
s.add(1) ###增加一个元素
s.update([5,2,3,6]) ###添加多个元素
s.pop() ##删除最前面的元素【第一个】
s.remove() ###指定删除某个元素
1.7两个集合之间的关系:
s1 = {1,2,3}
s2 = {2,3,4}
交集: s1.intersection(s2) ##s1与s2的交集
print('交集:',s1.intersection(s2))
print('交集:',s1 & s2)
并集: s1.union(s2) ##s1与s2的并集
print('并集',s1.union(s2))
print('并集',s1 | s2)
差集:
print('差集',s1.difference(s2)) ###s1 - (s1&s2)
print('差集',s2.difference(s1)) ###s2 - (s1&s2)
超集:
s3 = {1,2}
s4 = {1,2,3}
####s4是s3的超集【包含s3的全部】 ###当两个集合相同时,互为超集
print(s3.issuperset(s4)) ###超集
print(s3.issubset(s4)) ###子集
print(s3.isdisjoint(s4)) ###两个集合不相交返回True
练习:随机生成1-1000的随机数,去重,排序。生成随机数的个数由输入指定。
s = set([]) #定义空集合
for i in range(int(input('N: '))):
s.add(random.randint(1,1000)) #进行随机数生成 #集合自动去重
print(s) #输出去重后的集合
print(sorted(s)) #输出排序后的集合