八 元组
1 元组
▶ 元组tuple:是一个不可变序列
▶ 什么时候用列表?什么时候用元组。
● 一般情况下希望数据不改变,就用元组,其余情况都用列表。
▶ 创建元组:用()来创建元组
my_tuple=(1,2,3,4,5)
print(my_tuple,type(my_tuple))
#元组里面至少得有一个逗号
#当元组不是空元组时,括号可以省略
my_tuple=1,2,3,4,5
print(my_tuple,type(my_tuple))
▶ 元组的解包:解包就是指将元组当中的每一个元素都赋值给变量。
1.
my_tuple=1,2,3,4,5
a,b,c,d,e=my_tuple
print('a'=',a)
print('b'=',b)
print('c'=',c)
print('d'=',d)
print('e'=',e)
输出:a=1 b=2 c=3 d=4 e=5
my_tuple=1,2,3,4,5
a,b,*c=my_tuple
print('a'=',a)
print('b'=',b)
print('c'=',c)
输出:a=1 b=2 c=3 4 5
- 在元组解包时,变量的数量必须和元组中元素要一一对应
- 如果出现变量和元素没有相对等的情况下,我们可以在变量前面加*
- 这样变量就会将获取的元素中所有剩余的元素以列表形式返回
- *可以加在变量前面,中部,或者结尾
2 可变对象
▶ Python中,数值类型(int和float),字符串str,元组tuple都是不可变类型,而列表list,字典dict,集合set是可变型
▶ 可变对象指的就是我们可以对对象里面的value进行改变
a=[1,2,3]
a[0]=10(改对象)
#这个操作是通过变量去修改对象的值
#这种操作不会改变变量所指向的对象
a=[4,5,6](改变量)
#这个操作在给变量重新赋值
#这种操作会改变变量所指向的对象
#可变对象中保存了三个数据
1.id(标识) 2.type(类型) 3.value(值)
3.字典简介
3.1 字典的基本介绍
▶ 字典属于一种新的数据结构称为映射(mapping)
▶ 字典的作用和列表类似,都是用来存储对象的容器
▶ 列表存储数据性能好,但是查询数据的性能差,字典正好与之相反
▶ 在字典中每一个元素都有唯一的名字,通过这个唯一的名字可以找到指定的元素
▶ 在这个唯一的名字我们称之为key,通过key可以快速查询value,也可以称之为值
▶ 字典我们也称之为键值对(key-value)结构
▶ 每个字典都可以有多个键值对,而每一个键值对我们称其为一项(item)
▶ 创建一个有数据的字典,语法(key_value)
▶ 字典的值可以是任意对象,字典的键可以是任意的不可变对象(int str tuple bool…)
d={'name':'葫芦娃','age':7,'gender':'男'}
#{key-value,key-value......}
print(d)
#输出:{'name':'葫芦娃','age':7,'gender':'男'}
▶ 字典键是不能重复的,如果出现重复后面的会替换前面的
d={'name':'葫芦娃','age':7,'gender':'男','name':'蜘蛛侠'}
#{key-value,key-value......}
print(d)
#输出;{'name':'蜘蛛侠','age':7,'gender':'男'}
#获取值需要根据键来获取
d={'name':'葫芦娃','age':7,'gender':'男'}
printa(d['name'])
#输出:葫芦娃
3.2 字典的使用
▶ 可以通过dict()函数来创建字典
dict(name='葫芦娃',age=7,gender='男')
▶ 双值序列:序列中只有两个值,(‘x’,1),‘ab’,[5,6]
▶ 子序列:如果序列中元素也是序列,那么我们就称这个元素为子序列[(4,5),(6,7)]
d=dict([('name','葫芦娃'),('age',7)])
print(d,type(d))
▶ len()函数可以获取字典中键值对的个数
▶ in 检查字典中是否包含指定的键
▶ not in检查字典中是否不包含指定的键
d=dict([('name','葫芦娃'),('age',7)])
print('name' in d)
▶ 获取字典中的值 根据键(key)来获取
语法 dict[key]
dict(name='葫芦娃',age=7,gender='男')
n='name'
print(d[n])
print(d['n']) #keyError: 'n'
▶ et(key[,default]),该方法可以根据字典中的key来获取值,如果获取字典中的键不存在,就会返回None,也可以指定一个默认值来作为第二个参数,这样获取不到值的时候会返回默认值。
dict(name='葫芦娃',age=7,gender='`男')
print(d.get['python','该值不存在'])
▶ 修改字典 dict[key]=value
dict(name='葫芦娃',age=7,gender='`男')
d['name']='钢铁侠' #修改字典的key-value
d['phone']='15363347891' #向字典中添加key-value
▶ dict.setdefault(key[,default]),字典中添加key-value
▶ 如果key已经存在到字典当中,则返回key的值,不会对字典做任何操作
▶ 如果key不存在,则向字典中添加这个key,并设置value
d.setdefault('name','美国队长')
r=d.setdefault('python','美国队长')
print(r)
print(d)
▶ update()将其它字典中的key-value添加到当前字典当中,如果有重复的key,则后面的会替换到当前的
d={'a':1,'b':2,'c':3}
d2={'d':4,'e':5,'f':6,'a':7}
d.update(d2)
print(d)
# 输出:{'a':7,'b':2,'c':3,'d':4,'e':5,'f':6}
▶ 删除 del 来删除key-value
d={'a':1,'b':2,'c':3}
del d['a']
del d['b']
▶ popitem()一般会删除最后一个,删除之后它会将key-value作为返回值返回,返回的是一个元组,元组中有2个元素,第一个元素是key,第二个元素是value
d={'a':1,'b':2,'c':3}
d.popitem()
r=d.popitem()
▶ pop(key[,default]) 删除key字典中的key-value,会将删除的值返回
r=d.pop('d')
r=d.pop('w','没有这个key值'')
print(r)
print(d)
▶ 浅复制:复制后的对象和原对象是独立,修改一个不会影响另一个
d={'a':1,'b':2,'c':3}
d2=d
d['d']=50 #给字典添加key-value
d2=d.copy()
d['a']=30
print('d=',d,id(d))
print('d2',d.id(d2))
▶ 浅复制只会复制字典本身,如果字典中还有字典是不会被复制的
d={'a':{'name':'葫芦娃','age':7},'b':2,'c':3}
d2=d.copy()
d2['a']['name']=黑猫警长'
print('d=',d,id(d))
print('d2',d.id(d2))
▶ 遍历字典:
1.keys()该方法返回的是字典所有的key
d={'name':'葫芦娃','age':7,'gender':'男'}
#print(d.keys())
for k in d.keys():
print(d.[k])
2. values()返回一个序列,该序列中保存有字典的值
for v in d.values():
print(v)
3.items()返回字典所有的项,它返回的是一个序列,序列包含的是双值子序列
#print(d.items())
for k,v in d.item():
print(k,v)