提示:
python元组与集合
元组没有增删改查:**元组是python内置的数据结构之一,是不可变序列(无增删改操作)**不可变序列还有字符串
文章目录
不可变序列:不是不能进行增删改(相对于用户而言),而是增删改之后,id会发生变化,原id指向内容没有改变
元组
()存储内容和列表可以相同,性质有些区别
为什么要将元组设计为不可变序列呢?
多任务环境下,同时操作对象时不需要加锁(第一个任务操作后,不希望其它任务做出修改,就加锁,只允许其它任务看而不做),不可变序列就可以避开这个操作
第三步对于列表进行的操作[],是可修改的,第二步修改元组是不正确的,前者是对对象(可修改)进行了修改,指针是没有变的。而第二步修改了指针,这是不合法的
元组创建
#1
t=('python','hello',90)
#2
t=tuple(('python','hello',90))
#只包含一个元组的元素需要使用小括号和逗号
t=(10,)
#空元组
t2=()
t3=tuple()
元组遍历
t=('python','world',98)
print(t[1])#获取
for item in t:
print(item)
集合
集合是可变类型序列
是没有value的字典
#1
s={2,2,3,4,6,6}#{2,3,4,6}不允许重复!否则去除
#2内置函数set()
s1=set(range(6))#{0,1,2,3,4,5}
s2=set([1,2,3,3])#{1,2,3}
s3=set((1,2,3,4,4,5,65))#{65,1,2,3,4,5}!集合中的元素是无序的!
s4=set('python)#{'n','h','p','y','t','o'}!无序性
#空集合
s5=set()#{}空字典!
集合的相关操作
集合是无序的,就不用管加在哪里了!
s.update(元组,列表)都自动解析为单个元素并加入到集合s中
pop随机删(好像初始元组按序删),不能加参数
集合间的关系
isdisjoint,没交集
集合的数学操作
》交,差,并,对称差(不相交的部分)
s1={1,2,3,4}
s2={2,3,4,5,6}
#交集
print(s1 & s2)
print(s1.intersection(s2))
#并集
print(s1 | s2)
print(s1.union(s2))
#差集
print(s1-s2)
print(s1.difference(s2))
#对称差集
print(s1^s2)
print(s1.symmetric_difference(s2))
集合生成式
#列表生成式
lst=[i*i for i in range(6)]
print(lst)#[0,1,4,9,16,25]
s={i*i for i in range(6)}
print(s)#随机的{0,1,4,9,16,25}