#元组、集合 # 元组 ''' 元组:python内置的是数据结构之一,是一个不可变序列 不可边序列与可变序列: 不可变序列:字符串、元组 没有增删改的操作 可变序列:列表、字典 可以对序列执行增删改的操作,对象地址不发生更改 ''' #元组的创建: '''直接使用()''' t=('python','hello',91) print(t) print(type(t)) t1='python','hello',98 print(t1) print(type(t1)) '''使用内置函数tuple()''' t2=tuple(('pyhton','hello2',98)) print(t2) print(type(t2)) '''只包含一个元组的元素使用逗号和小括号''' t3=(10,) print(t3) print(type(t3)) '''空的元组''' t4=() print(t4) t5=tuple() print(t5) ''' 为什么将元组设计成不可变序列 在多任务环境下,同时操作对象时不需要加锁 因此,在程序中尽量使用不可变序列 注意事项: 元组中存储的是对象的引用 a)如果元组中对象本身不可变对象,则不能在引用其他对象 b)如果元组中的对象是可变对象,则可变对象的引用不允许改变,但数据可以改变 ''' t=(10,[12,15],100) print(type(t)) print(t[0],type(t[0]),id(t[0])) print(t[1],type(t[1]),id(t[1])) print(t[2],type(t[2]),id(t[2])) '''尝试将t[1]修改为2000''' #t[1]=2000 # 元组是不允许修改元素的 '''由于[12,15]是列表,而列表是可变序列,所以可以向列表中添加元素,而列表的内存地址不变''' t[1].append(2000) print(t[1],type(t[1]),id(t[1])) #元组的遍历 '''元组是可迭代对象,所以可以使用for...in进行遍历''' t=tuple(('python','helo',21)) for item in t: print(item) '''使用索引''' print(t[2]) #集合 ''' python语言提供的内置数据结构 与列表、字典一样都属于可变类型的序列 结合是没有value的字典 ''' #集合的创建 s={'pyhton','hello',91} print(s,type(s)) s1=set(range(6)) print(s1,type(s1)) s2=set([3,4,53,56]) print(s2,type(s2)) s3=set((3,4,53,56)) print(s3,type(s3)) s4=set('python') print(s4,type(s4)) s5=set({3,4,53,56}) print(s5,type(s5)) s6=set() print(s6,type(s6)) #集合的相关操作 ''' 集合元素的判断操作 in 或者 not in 集合元素的新增操作: 调用add()方法,一次添加一个元素 调用update()方法至少添加一个元素 集合元素的删除操作: 调用remove()方法,一次删除一个指定元素,如果指定的元素不存在抛出KeyError 调用discard()方法,一次删除一个指定元素,如果指定的元素不存在不抛异常 调用pop()方法,一次只删除一个任意元素 调用clear()方法,清空集合 ''' #集合间的关系 ''' 两个集合是否相等 可以使用运算符==或!= 进行判断 一个集合是否是另一个集合的子集 可以调用方法issubset进行判断 B是A的子集 一个集合是否是另一个集合的超集 可以调用方法issuperset进行判断 A是B的超集 两个集合是否没有交集 可以调用方法isdisjoint进行判断 ''' #集合的数学操作 '''交集''' s1={10,20,30,40} s2={20,30,40,50,60} print(s1.intersection(s2)) print(s1 & s2) #intersection()与&等价,交集操作 '''并集''' print(s1.union(s2)) print(s1 | s2) '''差集操作''' print(s1.difference(s2)) print(s1-s2) '''对称差集''' print(s1.symmetric_difference(s2)) print(s1 ^ s2) #集合生成式 lst={ i * i for i in range(5)} #{集合元素的表达式 for 自定义变量 in 可迭代对象} print(lst)
总结:
数据结构 | 是否可变 | 是否重复 | 是否有序 | 定义符号 |
列表list | 可变 | 可重复 | 有序 | [] |
元组tuple | 不可变 | 可重复 | 有序 | () |
字典dict | 可变 | key不可重复,value可重复 | 无序 | {key:value} |
集合set | 可变 | 不可重复 | 无序 | {} |