元组Python内置数据结构之一,不可变序列不可变序列:字符串,元组(无增删改)可变序列:列表,字典(对序列进行增删改查,对象地址做notchange)创建方法#1.使用()t=('12','mi','123')t1='12','mi','123'#可以省略()#2.使用内置函数tuplet2=tuple(('12','mi','123'))print(t2,type(t2))#('12','mi','123')#3.元组中只有一个元素时,需要添加。否则,类型将是元素的类型t3=(1,)#空元组t4=()t5=tuple()为什么要将元组设计为不可变序列?在多任务执行中,同时操作对象时不需要加锁,所以在程序中尽量使用不可变序列。注意:对象的引用存储在元组a中。如果元组中的元素本身是不可变对象,则不能再引用其他对象,即不能修改b。如果元组中的对象是可变对象,则可变对象的引用不允许改变,但数据可以改变遍历元组#获取元组的元素,可以使用索引t6=('12','mi','123')print(t6[1])#mi#遍历foritemint6:print(item)集合是Python内置数据结构之一,可变序列,没有值字典集合中的元素是无序的,不允许有重复元素,重复元素会自动删除。方法#1.使用{}s={'12','mi','123','5','5'}print(s)#{'12','mi','123','5'},不允许有重复元素,重复元素会自动删除#2.内置函数set()s1=set(range(6))s2=set([1,2,3])#listtosets3=set((1,2,3))#要设置的元组s4=set('hello')s5=set({'12','mi','123','5','5'})#空sets7=set()的常用操作setin/notin判断集合中是否存在元素#in/notin判断集合中是否存在元素s8={'12','mi','123','5','5'}print(10ins8)#Falseprint(10notins8)#Truenewoperation#添加单个s8.add(80)print(s8)#{'12','mi','5','123',80}#一次添加多个元素s8.update({1,2,3})print(s8)#{1,2,3,'123',80,'12','mi','5'}删除操作#一次删除指定元素s8.remove(1)#当指定元素不存在时会报错keyErrorprint(s8)#{'12',2,3,80,'123','mi','5'}s8.discard('12')#当指定元素不存在时,不会报错print(s8)#{'123',2,3,80,'5','mi'}#删除随机一个s8.pop()print(s8)#{3,'123','mi',80,'5'}#清除集合s8.clear()print(s8)#set()集合之间的关系#两个集合的元素相同或相等ss2={20,10,30,40}ss1={10,20,30,40}print(ss1==ss2)#True#一组是否是另一组的子集ss1={10,20,30,40}ss2={20,10,30,40,50,60}ss3={10,20,90}ss4={100,200}print(ss3.issubset(ss2))#Falseprint(ss1.issubset(ss2))#True#一个集合是否是另一个集合的超集print(ss2.issuperset(ss1))#Trueprint(ss2.issuperset(ss3))#False#两个集合是否相交print(ss3.isdisjoint(ss2))#False(交集)print(ss4.isdisjoint(ss2))#True(不交集)集合数据运算(数学运算)#交集运算:不影响原集合s11={10,20,30,40}s22={30,40,50,60}print(s11.intersection(s22))#{40,30}print(s11&s22)#代入符号#联合操作:不影响原集合print(s11.union(s22))#{40,10,50,20,60,30}print(s11|s22)#代入符号#差集操作:不影响原集print(s11.difference(s22))#{10,20}print(s11-s22)#代入symbol#symmetry差集:不影响原集print(s11.symmetric_difference(s22))#{10,50,20,60}print(s11^s22)#代入符号集生成语法:{i*iforiinrange(1,10)},类似于列表生成sss={i*iforiinrange(1,10)}print(sss)#{64,1,4,36,9,16,49,81,25}