元组类型
一 定义:参数为for循环的对象(可迭代对象)
t2=tuple('123')
print(t2,type(t2)) ('1', '2', '3') <class 'tuple'>
t3=tuple([1,2,3])
print(t3,type(t3)) (1, 2, 3) <class 'tuple'>
t4=tuple((7,8,9))
print(t4,type(t4)) (7, 8, 9) <class 'tuple'>
思考:如何定义只有一个值的元组
print(('owen',)) 只有一个值的时候,一定要加逗号
二、常用操作
1、元组是有序存储,按索引取值
t=(1,2,3)
print(t[1]) 2
print(t[-2]) 2
2、切片
t=(1,2,3)
print(id(t)) 2451016414120
nt=t[:-1:]
print(nt,id(nt)) (1, 2) 2451016592968
3、长度(item的个数)
t=(1,2,3,4,5,6)
print(len(t)) 6
三、元组的内置方法(该数据集合可以存放相同的数据)
1、count:元组中某个元素的个数
t=(1,2,3,2,3,1,4)
print(t.count(2)) 2
2、index(value,start=None,stop=None) 后面两个参数可以省略
t=(1,2,3,2,3,3,4,5,2,4,3)
print(t.index(2)) 1
print(t.index(3,2)) 2
print(t.index(2,2,5)) 3
案例一:提前拥有一个老师列表,打算开除,如果是校长亲友团,则免开。原始列表为list类型,手动输入是否是亲友团,决定是否能开除
teas=['bob','alex']
friends=input('亲友团[0,1]: ')
if friends=='1': #判断teas对象是否是tuple类型
teas=tuple(teas)
if not isinstance(teas,tuple): #老师是否是亲友团,不是就开除
teas.clear()
for i in teas:
print('在职老师:%s'%i)
案例二:元组中的数据一定不能改变,但元组中的数据(可变类型)的数据是可以改变的
t1=(1,2,'abc',tuple,True,(1,2))
t2=(1,2,[])
print(t2,type(t2),id(t2),id(t2[2])) (1, 2, []) <class 'tuple'> 1475809342448 1475808092808
t2[2].extend((10,20))
print(t2,type(t2),id(t2),id(t2[2])) (1, 2, [10, 20]) <class 'tuple'> 1475809342448 1475808092808
总结:t1=(1,2)
t2=tuple((1,2))
t3=(1,)
索引、切片、长度
count(obj)、index(obj,bindex,eindex)
有序存储,存多个值,不可变(内部存可变类型,可变类型内数据可变)
字典
一、声明
dict的key可以为所有不可变类型:int,float,tuple,str,bool,None,一般就采用字符串
dict的value可以为所有数据类型
注:key具有唯一性(重复会覆盖旧值),value可以重复
dic={10:None,None:None,3.14:None,True:None,'abc':None,(1,):None,None:12345}
print(dic) {10: None, None: 12345, 3.14: None, True: None, 'abc': None, (1,): None}
d1={'name':'owen','age':18}
print(d1) {'name': 'owen', 'age': 18}
d2=dict({'name':'owen','age':18})
print(d2) {'name': 'owen', 'age': 18}
d3=dict(name='egon',age=18)
print(d3) {'name': 'egon', 'age': 18}
字典无序存储数据,无索引与切片,用key来取值
二、增删改查
增:key不存在,会把新的key加入到原字典中
dic={}
dic['name']='mac'
print(dic) {'name': 'mac'}
update 添加的参数字典与dic可以重复,就是更新值,新的key就是新增
改:key已存在
dic['name']='big mac'
print(dic) {'name': 'big mac'}
查:
print(dic['name']) big mac
删:
del dic['name']
print(dic) {}
pop 根据key删除指定对象,并返回删除对象的value
三、get取值 .get(key)
取的是key,如果key不存在不会报错,拥有默认值None,也可以自定义默认值
四、如何定义空字典
{}.fromkeys(['a','b','c'])
第一个参数:keys:list/tuple
第二个参数:统一的默认value
append:如果有,在原key基础上添加新值,如果没有新建一个空key
setdefult:如果有,setdefult相当于什么都没有做,如果没有,就将第二个参数(默认值)传给该key,存放到原字典中
五、字典的循环(迭代)
直接for循环(遍历)字典得到的是key
values只循环值
keys循环key
items 存档key-value的键值对
集合set
1.定义与声明
什么是集合:
1)单列数据集合:str,list,tuple,set
双列:dict
2)无序存储:无key无index,无法取值
3)可变数据类型,内部可以存放任意数据类型,但数据具有唯一性
2、内置方法与使用----集合间的运算(&|^><==)
交集、并集、差集、对称差集
添加删除操作:
add 添加
pop 删除 随机删除一个元素