python中的元组与集合
元组
元组(Tuple)是‘不可变’的列表(List)
元组使用小括号,列表使用方括号
tup = ('张三','25','178')
元组的读与写
元组的读取方式与列表相同
元组的元素在创建后不允许修改
元组允许使用‘元组运算符’来创建新元组
(5,6)+(7,8,9)=(5,6,7,8,9)
('see','you')*2=('see','you','see','you')
元组的创建
t=('a','b','c',2,3) 建议加()
t='a','b','c',2,3 不加()也可以,也是元组
元组获取数据
元组的获取数据方式时与列表完全相同
例如:
t[5],
t[-1],
t[1:4]
'b' in tup
元组在创建后内容不可变
t[0]=2都会报错
写入数据同样不支持
t.append('a'),t.pop('a')都会报错
特殊情况
如果元组内持有列表,那么列表的内容是允许修改的
t2=(['张三','28'],['李四','22'])
t2[0][1]=30
元组运算符
(1,2,3)+(4,5)=(1,2,3,4,5)
('see','you')*2=('see','you','see','you')
注意:如果元组只有一个元素时,必须在这个元素后增加逗号说明这是一个元组
元组运算符同样适用于列表,但是不能混合使用
[1,2,3]+[4,5]=[1,2,3,4,5]
列表与元组的区别与应用场景
| 列表 | 元组 |
|---|---|
| 内容允许扩展 | 内容不可变 |
| 内存存储动态变化 | 创建后固定不变 |
| 效率较低 | 效率较高 |
| 运行时数据需要变更时使用 | 用于保存稳定不变的数据 |
| 保存天气数据,股市数据 | 保存国家名,元素周期表 |
认识‘序列’
序列(Sequence)是指‘有序’的队列
序列中的元素顺序按添加顺序排列
序列中的数据是通过索引进行获取(类似数组)
序列通常包含的数据结构
字符串(Str)
列表(List)
元组(Tuple)
数字序列(Range)
数字序列(Range)
range用于表示数据序列,内容不可变
数字序列使用range()函数创建
语法:r=range(0,100)# 产生0-99数字序列,注意左闭右开
r=range(10,20)# 10-19的整数,左闭右开
增加步长
r=range(10,20,2)最后一位2步长的意思 包含数字10,12,14,16,18
成员运算符
print(12 in range(10,20))#True
数字序列经典案例
通过range遍历其他序列
科学计算
序列类型的相互转换
list()将其他序列类型转换为列表
tuple()将其他序列类型转换为元组
join(),str()将其他序列类型转换为字符串
str函数用于将单个数据转为字符串join对列表进行连接
join要求所有元素必须是字符串
集合的介绍
集合(Set)是python中内置数据结构
集合可被看做是‘没有value的字典’
例如:{'张三','李四','王五'}
集合的特点
集合元素是无序的
集合元素不能重复
集合是可变的
集合允许数学运算
集合是分散存储的
集合的创建
使用
{}符号创建集合
使用set()函数创建几个
例子:
college = {'哲学','经济学','法学','教育学','物理学'}如果打印出来顺序是乱的,不固定
使用
set()内置函数从其他数据转换结构
college = set(['金融学','物理学','数学'])
使用
set创建字符串集合
set('中华人民共和国')
空集合的创建》
college = set()
集合关系与数学运算
交集(intersection),
并集(union)
差集(difference)
交集
交集(intersection),获取两个集合中重复的部分,有两个内置方法
coll1.intersection(coll2)新建一个
coll1.intersection_update(coll2)新建后赋值给coll1
并集
并集是,将两个集合所有元组合并去重
coll1.union(coll2)新建一个
差集 ,是指两个集合之间不同的部分
coll1.difference(coll2) 单项差集
coll1.symmetric_difference(coll2) 双向差集
coll1.symmetric_difference_update(coll2) 新建后赋值给coll1
集合间的关系操作
==判断两个集合的元素是否完全相同
s3.issubset(s4)s3是不是s4的子集
s4.issuperset(s3)s4是否包含s3
s5.isdisjoint(s6)判断两个集合是否存在重复元素
False代表存在重复True代表不存在重复元素
操作集合元素 ----增删改查
集合的遍历
for c in college:
print(c)
判断元素是否存在
print('哲学' in college)
print('哲学' not in college)
集合中新增元素
add方法 一次只能新增一个元素,如果该元素已存在则会忽略
college.add('计算机学')
update()方法来一次添加多个元素
college.update(['生物学','工程学'])列表形式
college.update(('生物学','工程学'))元组形式
remove()删除元素
college.remove('计算机学')
remove如果删除不存在的元素时会报错
discard()删除,如果不存在的元素时,则会忽略删除操作,不会产生错误
三种内置生成式
列表生成式
字典生成式
集合生成式
生成式语法
[被追加的数据 循环语句 循环语句或判断语句] | {}
列表生成式
lst = [i * 10 for i in range(10,20) if i % 2 == 0]
字典生成式
dict = {i+1:list[i] for i in range(0,len(list))}
print(dict)
集合生成式
set = {i*j for i in range(1,4) for j in range(1,4) if i == j}
print(set)