2021-08-25
课程介绍
1、什么是元祖
2、元祖的创建方式
3、元祖的遍历
4、什么是集合
5、集合的创建
6、集合的增、删、改、查、操作
7、集合生成式
66、什么是元祖
元祖是python内置的数据机构之一,是一个不可变序列。
不可变序列:字符串、元祖,没有增、删、改操作
可变序列:列表、字典:可执行增、删、改操作,操作后,地址不变
元祖是用小括号定义的,列表是用中括号定义的,内容相似
##66、什么是元祖
#可变序列 列表、字典
lst=[10,20,45]
print(id(lst))
lst.append(300)
print(id(lst)) #增、删、改操作,操作后,地址不变
#不可变序列 -- 字符串 元组
s='hello'
print(id(s))
s=s+'world'
print(id(s)) #增、删、改操作,操作后,地址改变
#元组
t=('python','hello')
67、元祖的创建方式
##67、元祖的创建方式
t=('python','world',98) #直接小括号
t1='python','world',98 #可以省略小括号
t2=('Python')
t3=('Python',) # 如果元祖值包含一个数据的话,需要加一个逗号,否则会被认为是原来的数据类型
print(type(t),type(t1),type(t2),type(t3))
t=tuple(('python','world',98)) #内置函数tuple()
print(type(t))
lst=[] #空列表的创建方式
d1={} #空字典的创建方式
d2=dict() #空字典的创建方式
t4=() #空元祖的创建方式
t5=tuple() #空元祖的创建方式
print(type(lst),type(d1),type(d2),type(t4),type(t5))
68、为什么要将元祖设计成不可变序列
一旦创建了不可变对象,那么对象内的所有数据就不能被修改,避免了修改数据导致的错误
多任务环境下,同时操作对象时不需要加锁
多个人对同一数据进行操作增删改时,对正在进行操作的人加锁,只有他能操作,避免数据混乱。
注意:如果元祖中对象是可变对象,则可变对象的引用不许改变,但数据可以改变
image.png
t=10,[20,30],9
print(type(t))
print(t[0],id(t[0]))
print(t[1],id(t[1]))
print(t[2],id(t[2]))
#尝试将t[1]修改为100
print(id(100))
# t[1]=100 #修改中,地址改变了,元祖不允许修改元素
t[1].append(100) #由于[20,30]是列表,是可变序列,可以向列表中添加元素,而地址不变
69、元祖的遍历
元祖是可迭代对象,可以使用for...in 遍历
##69、元祖的遍历
t='world',[20,30],9
t[0] #第一种获取元祖元素的方式,使用索引
for i in t: ##for in 遍历元祖
print(i)
70、什么是集合
python内置数据结构,集合是可变类型的序列,集合是没有value的字典(无序)
用花括号定义
71、集合的相关操作
判断:in 、not in
新增:add-一个元素、updata-添加多个元素
删除:remove-一个元素、discard-删除一个元素、pop--删除任意一个元素(不知道哪个)
72、集合间的关系
集合是否相等 ==
集合是否是另一个集合的子集 、超集
两个集合是否有交集
##72、集合间的关系
s={10,20,30,40}
s1={30,40,20,10}
print(s==s1) # True 两个集合是否相等,元素相同即可,无序
s={10,20,30,40}
s1={10,30,40}
s2={10,90}
print(s.issubset(s1)) # True 一个几个是否是另一个集合的子集
print(s.issubset(s2)) # False
print(s1.issuperset(s)) # True 一个集合是否是另一个集合的超集
print(s2.isdisjoint(s1)) # Fasle 两个集合是否含有交集,有交集为False
s4={100,200,300}
print(s4.isdisjoint(s1)) # Fasle 两个集合是否含有交集,没交集为True
73、集合的数学操作
交集、并集、差集、对称交集
image.png
##73、集合的数学操作
s1={10,20,30,40}
s2={20,30,40,50,60}
print(s1.intersection(s2)) #{40, 20, 30} 交集
print(s1 & s2) # 取交集
print(s1.union(s2)) # 取并集
print(s1|s2) # 取并集
print(s1.difference(s2)) #差集 属于s1不属于s2
print(s1.symmetric_difference(s2)) #对称差集,s1+s2去除掉交集的部分
print(s1^ s2) #对称差集,s1+s2去除掉交集的部分
74、集合生成式
用于生成集合的公式--列表生成式中括号改为大括号即可
lst=[i*i for i in range(1,10)] #列表生成式 有序
s={i*i for i in range(1,10)} #集合生成式 无序
print(lst,s)
网友评论