集合——字典的近亲
集合的两个功能:
集合可以实现去重的功能;集合可以实现关系测试; 交集, 差集,并集, 是否子集, 是否没有交集........
一、定义集合:
# 如果花括号里面为空,则是字典类型
# 定义集合的第一种方式 集合是不重复的数据结构
# 工厂函数定义集合
# 工厂方法定义集合时, 括号里面是可迭代的对象, eg: 数值类型不可以
应用:实现列表去重
# 转换为集合数据类型; set(列表)
# 字典的fromkeys方法实现
二、集合的特性
集合是无序的, 不重复的数据类型;
因此不支持索引,也不支持切片;也不支持重复;也不支持连接;
支持成员操作符;
支持for循环;
# 成员操作符
# for循环
三、集合的增查删
# 增
- s.add( )
- s.update( )
# 查- (关系测试操作)
* 交集
s1 & s2
s1.intersection(s2) #s1.intersection_update(s2)
* 并集
s1 | s2
s1.union(s2)
* 差集
s1 - s2 # s1.difference(s2)
s2 - s1 # s2.difference(s1)
* 对等差分
s1 ^ s2 # s1.symmetric_difference(s2)
# 删
- s.pop( )
- s.remove( ) # 删除集合指定元素, 如果不存在,则报错
- s.discard删除集合指定元素, 如果不存在,do nothing
- s.clear清空集合元素
应用:
(华为机试题)题目描述:明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性, 他先用计算机生成了N个1到1000
之间的随机整数(N≤1000), N是用户输入的,对于 其中重复的数字,只保留一个,把其余相同的数去
掉,不同的数对应 着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺 序去找同学做调
查。请你协助明明完成“去重”与“排序”的工作;
提示:
生成随机数,
import random
random.randint(1,1000)
列表的去重
程序:
#!/usr/bin/env python
#coding:utf-8
import random
s = set()
a = input("生成随机数个数:")
for i in range(1,a+1):
s.add(random.randint(1,1000))
print sorted(s)
#sorted是内置方法,用来排序
#
#
#li = list(s)
#li.sort()
#print li
测试:
###数据结构小结