1、什么是元组
元组
- Python内置的数据类型之一,是一个不可变序列
可变序列与不可变序列
- 不可变序列(没有增删改操作):字符串,元组
- 可变序列(对象地址不改变):列表,字典,集合
为什么要将元组设计成不可变序列
- 在多任务环境下,同时操作对象时不需要加锁
- 因此,此程序中尽量使用不可变序列
注意事项:元组中存储的是对象的引用 - 如果元组中对象本身是不可变对象,则不能引用其他对象
- 如果元组中的对象是可变对象,则可变对象的引用不可以改变,但数据可以改变
2、元组的创建方式
- 直接小括号(多个元素小括号可以省略)
(t=‘python’,‘hello’,90)
- 内置函数tuple()
t=tuple((‘python’,‘hello’,90))
- 只包含一个元素的元组需要使用都好和小括号
t=(10,)
3、元组的遍历
元组是可叠戴对象,所以可以用for-in进行遍历
t=tuple((‘python’,’hello’,90))
for item in t
print(item)
也可以利用下标索引,但是不知道元素个数可能会造成下标越界
4、什么是集合
- Python语言提供的内置数据结构
- 与列表、字典一样都属于可变类型的序列
- 集合是没有value的字典
- 集合中的元素不允许重复
5、集合的创建
- 直接{}
s={‘python’ ,’hello’,90}
- 用内置函数set()
s1 = set(range(6)) s2 = set([1,2,3,4,5,6,6,5])#列表转集合 s3 = set((1,2,4,5,67,2))#元组转集合 s4 = set(‘python’) #字符串转集合 s5 = set({1,2,3,4,5,6,7})
注:空集合不能用
s6 = {}
这样创建的是空字典
要采用set()函数创建空集合s7 = set()
6、集合的增、删、改、查操作
集合元素的判断操作
in或not in
集合元素的新增操作
调用add()方法,一次添加一个元素集合名.add(元素)
调用update()方法至少添加一个元素集合名.update(元素)
集合元素的删除操作
调用remove()方法,一次删除一个指定元素,如果制定元素不存在抛出KeyError集合名.remove(元素)
调用discard()方法,一次删除一个制定元素,如果指定元素不存在不抛出异常集合名.discard(元素)
调用pop()方法,一次删除一个任意(随机)元素集合名.pop()
调用clear()方法,清空集合集合名.clear()
7、集合间关系
两个集合是否相等
- 可以用运算符==或者!=进行判断
一个集合是否是另外一个集合子集 - 可以调用issubset()进行判断
一个集合是否是另一个集合的超集 - 可以调用方法issuperset()进行判断
两个集合是否没有交集 - 可以调用isdisjoint进行判断
s = {1,2,3,4,5,6} s2 = {1,2,3} s3 = {1,2,4} print(s2.issubset(s)) #True s2是s的子集 print(s3.issubset(s)) #Flase s3不是s的子集 print(s.issuperset(s2)) #True s是s2的超集 print(s2.isdisjoint(s3)) #False 是否没有交集
8、集合的数据操作
交集
- 调用intersection方法获取交集(或者用&符号也可以)
并集 - 调用union方法获取并集(或者用符号|也可以)
差集 - 调用difference方法获取差集(符号 - )
对称差集 - 调用symmetric_difference(符号 ^)
s1 = {1,2,3,4} s2 = {2,3,4,5,6} #不改变原集合 print(s1 & s2) #{2,3,4} print(s1 | s2) #{1,2,3,4,5,6} print(s1 - s2) #{1} print(s1 ^ s2) #{6}
9、集合生成式
将列表生成式的[]改成{}就行
注:元组不可变序列无生成式
{i*i for i in range(1,10)}