元组和字典,深拷贝和浅拷贝

元组

元组是不可变数据类型
创建一个元组:

tuple1=(1,2,3,11,22,33)

元组也可以切片
如果元组不是一个空元组,那里边必须有逗号:

a=(10,)

元组的拆包

tuple1=(1,2)
a,b=tuple
print(a,b)

查看结果

1  2

如果有多个元素,可以使用*来拆包,一个字母代表一个,查表后的类型和再元组中的一样
加上星号则会取剩下的所有的,因此只能有一个星号,拆后会放在列表里。

tuple2=(1,2,3,4,5,6,7,8,9)
a,*b=tuple2
print(a,b)
1 [2, 3, 4, 5, 6, 7, 8, 9]
除了元组,字符串和列表也可以拆包

字典

创建一个字典

dic={}  #创建一个空字典
dic1={"key""value"}  #创建一个字典  
dic2={"a":"1"
	  "b":"2"
	  "c":"3"
}

通过dict去创建列表

dic=dict("a"="1","b"="2")

通过key来获取value: dict[key] 如果key值不存在,就会报错
dict.get(key) 如果key不存在,会返回None

字典的长度是看键值对的个数
in和not in 是看key是否再字典中
字典的修改: dict[key]=xxx
字典添加键值对: dict.setdefault( key ,value ) ** 如果字典中已经存在key,则不会修改**
字典与字典合并: dict1.update(dict2) 把 dict2添加到dict1中
dict.popitem():随即删除一个键值对,一般是第一个
dict.pop(key):根据key来删除键值对
dict.clear():清空字典

浅拷贝和深拷贝:

copy是浅拷贝

li1=[2,212,1,132,13,[1,2,3]]
li2=[2,212,1,132,13,[1,2,3]]
li3=li1.copy()
print(id(li1),id(li2),id(li3))
print(id(li1[5]),id(li2[5]),id(li3[5]))

查看id
发现li1和li3中列表的id是相同的

2021412027840 2021412147136 2021412133696
2021410721536 2021412134784 2021410721536

在浅拷贝的时候,li1中的列表被创建,然后在,copy的时候直接被拿过去使用,而li2中的列表是重新创建的。

浅拷贝不能拷贝第一层的数据

copy.deepcopy是深拷贝

import copy
li1=[2,212,1,132,13,[1,2,3]]
li2=[2,212,1,132,13,[1,2,3]]
li3=copy.deepcopy(li1)
print(id(li1),id(li2),id(li3))
print(id(li1[5]),id(li2[5]),id(li3[5]))

深拷贝相当于全部更新创建

1473024277376 1473025409856 1473025410624
1473024280064 1473025410560 1473025409600

遍历字典

dict1={"a":"1","b":"2","c":"3"}
for k in dict1.key():  #遍历key值
for v in dict1.value():  #遍历value值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值