
元组
- 不可变序列:无增、删、改操作
- 序列和字典都是可变序列
- 元组名= ( 元素1 , 元素2 ,… )(与列表类似)
创建
- 使用小括号()
- 使用内置函数tuple():
t = tuple ( ( ' xxx ' , ' xx ' , 000 ) )
- 若元组中只包含一个元素,需要使用逗号和小括号:
t = ( 10 , )
- 空元组的创建(与空列表、空字典的创建相似)
t1=()
t2=tuple()
元组为不可变序列
元组的元素不可修改,但若元组中的元素为可变序列,可以修改这个元素
t=(10,[20,30],90)
print(t,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]修改为100'''
print(id(100))
#t[1]=100 报错,因为元组是不可变序列,不能修改
t[1].append(100)#向列表中增加元素e
print(t,id(t[1]))
运行结果
元组的获取
- 使用索引:
元组名[索引数]
- 遍历:
for ... in ....
(不知道有元组有多少个元素时)
t=('python','你好',200)
for item in t:
print(item)
运行结果:
python
你好
200
集合
- 可变类型的序列(可进行增、删、改操作)
- 集合是没有value的字典(集合的元素相当于字典中的key)
**注意:**集合和字典一样,是不可重复的
创建:
- 使用花括号{}
- 使用内置函数set()
- 空集合:
集合名=set( )
s={1,3,1,7,8,9}#集合中的元素不可重复
print(s,type(s))
s1=set(range(6))
print(s1,type(s1))
s2=set([2,3,5,5,9])#列表类型转为set
print(s2,type(s2))
s3=set(('python','你好',200,67,67))#元组转为set
print(s3,type(s3))
s4=set('python')# 可以看出集合中的元素是无序的
print(s4,type(s4))
运行结果:
{1, 3, 7, 8, 9} <class 'set'>
{0, 1, 2, 3, 4, 5} <class 'set'>
{9, 2, 3, 5} <class 'set'>
{200, 67, 'python', '你好'} <class 'set'>
{'n', 'o', 't', 'y', 'p', 'h'} <class 'set'>
集合的相关操作
判断操作
判断某元素是否在集合中:in 或not in(同列表,字典)
增
- 使用add():添加一个元素
- 使用update():至少添加一个元素
s.add(10) #{1, 3, 7, 8, 9, 10}
print(s)
s.update({10,11,12}) #{1, 3, 7, 8, 9, 10, 11, 12}
print(s)
s.update([13,14])#{1, 3, 7, 8, 9, 10, 11, 12,13,14}
print(s)
s.update((20,40))#{1, 3, 7, 8, 9, 10, 11, 12, 13, 14, 40, 20}
print(s)
删
- remove():删除一个指定元素(若不存在则报错KeyError)
- discard():删除一个指定元素(若不存在不抛出异常)
- pop():一次删除任一元素(不知道删除的是哪个)
- clear():清空集合
集合间的关系
2个集合是否相等
- 元素相同就相等
- 使用运算符==或 !=,返回结果为True或False
注意:2个集合只顺序不同也视为是相等的
s1={10,20,30}
s2={20,10,30,10}
print(s1==s2) #True
包含关系
- B时A的子集:使用issubset
- A是B的超集:issuperset
注意:集合A是自己的子集也是自己的超集
s1={10,20,30}
s2={20,10,30,50}
print(s1.issubset (s2))#判断s1是否为s2的子集 True
print(s2.issuperset(s1))# 判断s2是否为s1的超集 True
是否有交集
- 使用isdisjoint判断:
集合1.isdisjoint(集合2)
若有交集返回False,无交集返回True
集合的数学操作
- 交集:
集合1.intersection (集合2)
或集合1 & 集合2
- 并集:
集合1.union (集合2)
或集合1 | 集合2
- 差集:
集合1.difference (集合2)
或集合1 - 集合2
- 对称差集
集合1.symmetric_difference (集合2)
或集合1 ^ 集合2
上面4个操作均不改变原来2个集合的值
s1={10,20,30}
s2={20,30,50,40}
print(s1.intersection(s2))
print(s1 & s2) #intersection方法与&等价,均为交集操作
print(s1.union(s2))
print(s1 | s2) #union方法与|等价,均为并操作
print(s2.difference(s1))
print(s2 - s1) #difference与-相同,均为差操作
print(s2.symmetric_difference(s1))
print( s1 ^ s2) #symmetric_difference与^相同,均为对称差
运行结果:
{20, 30}
{20, 30}
{50, 20, 40, 10, 30}
{50, 20, 40, 10, 30}
{40, 50}
{40, 50}
{40, 10, 50}
{40, 10, 50}
集合生成式
字典生成式:d={item:value for item,value in zip(item,value)}
列表生成式:[ 2 * i for i in range ( 1 , 10 ) ]
集合生成式:{ 2 * i for i in range ( 1 , 10 ) }
(把列表生成式中的[]改为{}即可)