第七次作业

元组

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

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值

作业1

a={
     "name":"123","data":{
     "result":[{
     "src":"python1"},{
     "src":"python2"},{
     "src":"python3"}]}}
for i in range(3):
    print(a["data"]["result"][i]["src"])
python1
python1
python1

第二题

li=[11,22,33,44,55,66,77,88,99,90]
li1=[]
li2=[]
for i in li:
    if i >66:
        li2.append(i)
    else:
        li1.append(i)
dic={
     "a":li1,"b":li2}
print(dic)

你可能感兴趣的:(python)