python的内置数据结构之一,是一个不可变序列,字符串也是不可变序列
创建元组时,使用(),()可以省略,或者使用内置函数tuple()。要注意元组中只有一个元素时,要在该元素之后加上一个逗号。
创建空元组时,使用()或tuple()
#使用()创建元组
test=('yes','no','you','me')
#使用内置函数tuple()
test=tuple(('yes','me'))
#简易方式
test='yes','as','no'
#元组中只有一个元素时
test=('yes',)
test='yes',
test=tuple(('yes',))
#创建空元组
test=()
test=tuple()
注意,元组中存储的是对象的引用,只能保证元组这一层不能修改。例如,当一个元组中存储了一个列表时,不能将元组中存储的列表修改为别的列表或者数字,但可以对存储的列表进行修改,例如删除这个列表中的某个元素。
可以使用for-in对元组进行遍历
test=('yes','no','you','me')
#两种For-in方法
for item in test:
print(item)
for i in range(len(test)):
print(test[i])
集合
也是一种python内置数据结构,是一种可变类型的序列
集合是没有value的字典
创建集合有两种方法:{}和set()
#集合中的元素不允许重复
test={'a','b','c','a'}
#得到的是{'c', 'b', 'a'},重复的元素被去掉了
print(test)
#使用set()方法
#得到{0, 1, 2}
test=set(range(3))
#得到{1, 2, 3}
test=set([1,2,3,1])
#得到{2, 3, 4}
test=set((2,3,4,2))
#得到{'t', 'n', 'p', 'y', 'o', 'h'}
test=set('python')
#得到{1, 2, 3, 4}
test=set({1,2,3,4,1})
#定义空集合
test=set()
集合的相关操作
检测相关元素是否在集合之中
使用in和not in
新增有两种方法——add和update方法
add()方法一次增加一个元素
update()方法一次增加至少一个元素
s={1,2,3}
#得到{80, 1, 2, 3}
s.add(80)
#得到{1, 2, 3, 80, 20, 30}
s.update([20,30])
#得到{1, 2, 3, 5, 10, 80, 20, 30}
s.update({10,5})
#得到{1, 2, 3, 5, 7, 10, 80, 20, 30}
s.update((7,))
删除
remove()方法:一次删除一个指定元素,不存在则抛出KeyError
discard()方法:一次删除一个指定元素,不存在不报错
pop()方法:删除集合中第一个元素,并且返回这个元素
clear()方法:清空集合
集合间的关系相等,子集,超集,交集
相等可以使用==和!=来判断
子集可以使用issubset来判断
超集(即A是B的子集,那B是A的超集)可以用issuperset来判断
交集可以用isdisjoint来判断是否没有交集
s1={1,2,3,4}
s2={2,3,5,6}
s3={1,2}
s4={3,4}
#判断是否相等
#输出False
print(s1==s2)
#判断是否为子集
print(s3.issubset(s1))#输出TRUE
print(s3.issubset(s2))#输出False
#判断是否为超集
print(s1.issuperset(s3))#输出TRUE
print(s1.issuperset(s2))#输出False
#判断是否没有交集
print(s3.isdisjoint(s4))#输出TRUE
print(s3.isdisjoint(s1))#输出False
集合的数学操作
交集:intersection()函数和&
并集:union()和|
差集:difference()方法和-
对称差集:symmetric_difference()方法和^
s1={1,2,3,4}
s2={2,3,5,6}
s3={1,2}
s4={3,4}
#求交集
#两种方法均输出{2, 3}
print(s1.intersection(s2))
print(s1 & s2)
#求并集
#两种方法均输出{1, 2, 3, 4, 5, 6}
print(s1.union(s2))
print(s1 | s2)
#求差集
#两种方法均得到{1, 4}
print(s1.difference(s2))
print(s1-s2)
#求对称差集
#两种方法均得到{1, 4, 5, 6}
print(s1.symmetric_difference(s2))
print(s1^s2)
集合生成式
类似列表生成式,将[]换为{}就可以了
#得到{0, 1, 4}
print({i**2 for i in range(3)})



