今日是学习python的第006课,本节课主要学习了元组、字典和集合数据类型。
元组类型tuple
1、什么是元组
元组就是一个不可变的列表
2、用途
用于存放多个值,当存放的多个值只有读没有改的需求时,用元组最合适
3、定义方式
在()内用逗号分隔开多个任意类型的值
t=(1,3.1,'aaa',(1,2,3),['a','b']) # t=tuple(1,3.1,'aaa',(1,2,3),['a','b'])
也可以用来转换数据类型
res=tuple('hello') #字符串
res=tuple({'x':1,'y':2}) #字典
print(res)
#利用for循环将数值一个个的存入
常用操作和内置方法
优先掌握的操作
1、按索引取值(正向取+反向取):只能取
t=('a','b',1)
print(t[0])
#运行结果
a
t[0]=111
#运行结果
报错,说明不能改值
2、切片(顾头不顾尾,步长)
t=('h','e','l','l','o')
res=t[1:3]
print(res)
print(t)
#运行结果
('e', 'l')
('h', 'e', 'l', 'l', 'o')
3、长度
t=('h','e','l','l','o')
print(len(t))
#运行结果
5
4、成员运算in和not in
t=('h','e','l','l','o')
print('h' in t)
#运行结果
True
5、循环
t=('h','e','l','l','o')
for item in t:
print(item)
#运行结果
h
e
l
l
o
总结
1、存多个值
2、有序
3、不可变:不可变指的是数值对应的内存地址不可变
t=(1,'a',['x','y','z'])
print(id(t[2]))
print(id(t))
t[2][0]='X'
print(t)
print(id(t))
print(id(t[2]))
#运行结果
2717545866248
2717546660704
(1, 'a', ['X', 'y', 'z'])
2717546660704
2717545866248
掌握的操作
1、index 查找某一个值的索引
t=('a','b','a')
print(t.index('a'))
#运行结果
0
t.index('xxx')
#运行结果
报错
print(t.count('a'))
2、count 统计某一个值有多少个
t=('a','b','a')
print(t.count('a'))
#运行结果
2
字典类型dict
1、用途
用来存放多个(不同种类)的值
2、定义方式
在{ }内用逗号分隔开多个key:value的元素,其中value可以时任意数据类型,而key的功能通常是用来描述value的,所以key通常是字符串类型,但其实key必须是不可变的类型(int、float、str、tuple)
d={0:'x',1.3:'y','k1':'z',(1,2,3):'aaa'} # d=dict{0:'x',1.3:'y','k1':'z',(1,2,3):'aaa'}
print(d[(1, 2, 3)])
#运行结果
aaa
d1={[1,2,3]:'aaaaa'}
#运行结果
报错,列表为不可hash类型(可变类型)
除了造字典还具有数据转换功能
d=dict([('k1',1),('k2',2),('k3',3)])
print(d)
#运行结果
{'k1': 1, 'k2': 2, 'k3': 3}
#原理:dict先造一个空字典,然后利用for循环列表取存数值
===============================================
利用for循环转换成字典
l=[('k1',1),('k2',2),('k3',3)]
d={}
for t in l: #t=('k1',1)
k,v=t
d[k]=v
print(d)
===============================================
d=dict(l)
print(d)
===============================================
d=dict(x=1,y=2,z=3)
print(d)
3、常用操作和内置方法
优先掌握的操作
1、按key存取值:可存可取
d={'x':1}
print(d['x'])
#运行结果
1
============================
d={'x':1}
print(id(d))
d['x']=1111 #更改了x的值
print(d) #运行结果:{'x': 1111}
print(id(d)) #值变了,id没变,证明字典是可变类型
d['y']=2222 #新增了y的值
print(d) #运行结果:{'x': 1111, 'y': 2222}
2、长度len
d={'x':1,'y':2,'z':3}
print(len(d))
#运行结果
3
3、成员运算in和not in
d={'x':1,'y':2,'z':3}
print(1 in d)
print('x' in d)
#运行结果
False
True
证明字典的成员运算是按照key来的
4、删除:根据key删除
d={'x':1,'y':2,'z':3}
del d['y']
print(d)
res=d.pop('y')
print(d)
print(res) #返回删除的y的值
res=d.popitem()
print(res) #随机删除,可证明字典是无序的
5、键keys(),值values(),键值对items()
d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
print(d.keys())
print(list(d.keys())) #利用for循环取出列表
print(d.values())
print(list(d.values())) #利用for循环取出列表
print(d.items())
print(list(d.items())) #利用for循环取出列表
#运行结果
dict_keys(['name', 'age', 'sex', 'hobbies'])
['name', 'age', 'sex', 'hobbies']
dict_values(['egon', 18, 'male', [1, 2, 3]])
['egon', 18, 'male', [1, 2, 3]]
dict_items([('name', 'egon'), ('age', 18), ('sex', 'male'), ('hobbies', [1, 2, 3])])
[('name', 'egon'), ('age', 18), ('sex', 'male'), ('hobbies', [1, 2, 3])]
6、循环
d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
for k in d.keys():
print(k)
#运行结果
name
age
sex
hobbies
=================================
d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
for k in d: #不加.keys就是默认取key
print(k)
#运行结果
name
age
sex
hobbies
=================================
d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
for v in d.values():
print(v)
#运行结果
egon
18
male
[1, 2, 3]
=================================
d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
for k,v in d.items(): #k,v=('name', 'egon')
print(k,v)
#运行结果
name egon
age 18
sex male
hobbies [1, 2, 3]
该类型总结
1、存多个值
2、无序
3、可变
需要掌握的操作
1、get 如果目标值不存在,用get取值也不会报错
d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
v=d.get('name')
print(v)
#运行结果
egon
2、update 更新字典,老字典内没有的数值就新增,老字典内有的数值就改变,以新字典为准
d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
d.update({'x':1,'name':"EGON"})
print(d)
3、fromkeys 需求是快速新造出一个字典,value的初始值全都为None,而key是来自于一个列表