python系列
python第一章(上)
python第一章(下)
python第二章
python第三章(上)
python第三章(下)
python第四章(上)
前言
集合
简介
- Python中的集合和数学上的集合概念很类似,用来存放一组无序且互不相同的元素。同时,组成集合的元素必须是不可变类型。
- 集合除了支持数学中的集合运算外,主要用来进行关系测试和消除重复元素。
创建
直接创建
set1={1,2,3,4,3}
print(set1)
set2={(1,2),(4,3)}
print(set2)
- 有相同元素自动去重
- 元素可以放进去,列表不行,因为列表可变
- 运行截图
set函数
s='hello python'
s=set(s)
print(s)
s2=[1,1,2,5,6]
s2=set(s2)
print(s2)
- 运行截图
空集合
se={}
print(type(set))
set1=set()
print(type(set1))
- 创建空集合不能直接用一对大括号,不然是字典
- 要用不带参数的set函数
- 运行截图
访问
- 集合的元素是无序的,也没有键和值的概念,所以集合元素的访问要么通过集合名作整体输出,要么通过for循环实现元素遍历。
st={1,2,3,5,6}
print(st)
for i in st:
print(i)
- 运行截图
操作
添加
函数或方法 | 描述 |
---|
S.add(item) | 将参数item作为元素添加到集合S中,如果item是序列,则将其作为一个元素整体加入集合(作为参数的item只能是不可变的数据。) |
S.add(items) | 将参数序列items中的元素拆分去重后加入集合。(参数items可以是可变数据。) |
删除
函数或方法 | 描述 |
---|
S.remove(item) | 将指定元素item从集合S中删除。如果item在集合中不存在,系统报错。 |
S.discard(items) | 将指定元素item从集合S中删除。如果item在集合中不存在,系统正常执行,无任何输出。 |
S.pop(item) | 从集合S中随机删除并返回一个元素。 |
S.clear(items) | 清空集合中所有的元素。 |
成员判断
函数或方法 | 描述 |
---|
item in S | 判断元素item是否在集合S中,在,返回True;不在,返回False。可配合pop实现集合的清空操作。 |
集合的数学运算
方法和运算符 | 功能 |
---|
A.unionB | 求并集 |
A.intersectionB | 求交集 |
A.difference(B) | 求差集 |
A.symmetric_difference(B) | 求对称差集 |
- 也可以直接用运算符来代替方法
- A|B(求并集)
- A&B(求交集)
- A-B(求差集)
- A^B(求对称差集)
A={1,2,3,4,5}
B={4,5,6,7,8}
print(A|B)
print(A.union(B))
- 运行截图
A={1,2,3,4,5}
B={4,5,6,7,8}
print(A&B)
print(A.intersection(B))
- 运行截图
A={1,2,3,4,5}
B={4,5,6,7,8}
print(A-B)
print(A.difference(B))
- 运行截图
A={1,2,3,4,5}
B={4,5,6,7,8}
print(A^B)
print(A.symmetric_difference(B))
- 运行截图
- 例子,生成20个0~20的随机数并输出其中互不相同的数。
import random
ls=[]
for i in range(20):
ls.append(random.randint(0,20))
s=set(ls)
print("生成20个数是:",ls)
print("互不相同的数字是:",s)
- 运行截图
-IEEE和TIOBE是两大热门编程语言排行榜。截止2018年12月,IEEE榜排名前五的编程语言分别是:Python、C++、C、Java和C#;TIOBE榜排名前五的编程语言是:Java、C、Python、C++、VB.NET。请编写程序求出: - 上榜的所有语言;
- 在两个榜单同时进前五的语言;
- 只在IEEE榜排进前五的语言;
- 只在一个榜单进前五的语言。
setI={'Python','C++','C','Java','C#'}
setT={'Java','C','Python', 'C++','VB.NET'}
print("IEEE2018排行榜前五的编程语言有:")
print(setI)
print("TIOBE2018排行榜前五的编程语言有:")
print(setT)
print("前五名上榜的所有语言有:")
print(setI | setT)
print("在两个榜单同时进前五的语言有:")
print(setI & setT)
print("只在IEEE榜进前五的语言有:")
print(setI - setT)
print("只在一个榜单进前五的语言:")
print(setI ^ setT)
- 运行截图