14天学完基础语法后,接下来针对PYTHON的重要知识点进行专项训练、分析、理解和应用,以便快速深刻地领会python语法的精髓和编程思维,同时详细记录和分享操作过程以及经验心得,争取在离“爬”的路上越走越顺、越走越近。——题记
继续实训、继续分析、继续记录、走起喔!
01 若 a = dict(),令 b = a,执行 b.update({'x’:1}), a亦被改变。为何?如何避免?
a = dict()
a = b
b.update({'x': 1})
print(f'a字典为{a},b字典为{b}')
# 避免字典a随着字典b的改变而改变
a.clear()
b = a.copy()
b.update({'x': 1})
print(f'a字典为{a},b字典为{b}')
分析记录01
两次运行结果对比可以看出,通过“=”号直接赋值,实质上是没有开辟新的存储空间,两个变量共享存储内容,使用copy()函数复制后,新的运行存储空间产生了,即可避免多个变量共享存储空间。
02 以列表 ['A','B','C','D','E','F','G','H'] 中的每一个元素为键,默认值都是0,创建一个字典。
# 解法1
lis = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
dic = {item: 0 for item in lis}
print(f'解法1创建字典{dic}')
# 解法2
dic = {}
dic = dic.fromkeys(lis, 0)
print(f'解法2创建字典{dic}')
分析记录02
解法1使用字典推导式进行创建字典,for 前面item:0为字典的键值对,item 为要遍历的列表元素,每遍历列表一个元素,字典就产生一对键值对,且所有键的对应的值都是0。
解法2使用字典的fromkeys()函数创建字典,该函数用于创建一个新字典,以序列 中的元素做字典的键,value 为字典所有键对应的初始值。语法为:dict.fromkeys(seq[, value]),参数seq –字典键值列表,value — 可选参数, 设置键序列(seq)对应的值,默认为 None。函数参数中出现的“[ ]”,代表是可选项,不是必选项。
03 将二维结构 [['a’,1],['b’,2]] 和 (('x’,3),('y’,4)) 转成字典。
# 解法1
lis1 = [['a', 1], ['b', 2]]
tup1 = (('x', 3), ('y', 4))
lis1 += list(tup1)
dic = {item[0]: item[1] for item in lis1}
print(f'解法1转换字典{dic}')
# 解法2
seq1 = [['a', 1], ['b', 2]]
seq2 = (('x', 3), ('y', 4))
dic1 = dict(seq1)
dic2 = dict(seq2)
dic1.update(dic2)
print(f'解法2转换字典{dic1}')
分析记录03
解法1 先把列表和元组合并为1个列表,然后使用字典的推导式很直观地转换为字典。因合并后的列表为二维列表,所以item此时不是单个数据元素,而是一个列表元素(含2个元素),故item[0]代表列中列的第一个元素,即为字典的键,item[1]代表列中列的第二个元素,即为字典的值。
解法2 先使用dict()函数把列表和元组转换为2个字典,然后再使用字典的update()函数更新任一字典进行转换字典。
04 将元组 (1,2) 和 (3,4) 合并成一个元组。
分析记录04
元组与列表类似,下标索引从0开始,可以进行截取,组合等,但是元组的元素是不可修改的,当只有一个元素时,需要在元素后面添加逗号,如tup=(10,)。与列表一样,使用“+”操作既可以合并元组。
05 将空间坐标元组 (1,2,3) 的三个元素解包对应到变量 x,y,z。
分析记录05
涉及到元组的打包和拆包,将多个元素放到元组中为打包,将元组中的元素取出来,分别赋值给不同的变量,称为拆包。就像送外卖,假设外卖箱是元组,外卖员取餐盒放入箱子过程就是元组打包,外卖员派送餐盒给不同的点餐者的过程就是元组拆包。
06 返回元组 ('Alice’,'Beth’,'Cecil’,'Cecil’) 中 'Cecil’ 元素的索引号以及元素个数。
分析记录06
和列表一样,index()函数获取指定元素的索引号,通过count()函数统计指定元素个数,注意当' '中包含字符串的时候,为避免引起歧义,需要使用" "将字符串括起来,而不能使用' '。
07 返回在元组 (2,5,3,7) 索引号为2的位置插入元素 9 之后的新元组。
# 解法1
tup = (2, 5, 3, 7)
lis = list(tup)
lis.insert(2, 9)
print(tuple(lis))
# 解法2
seq = (2, 5, 3, 7)
tup = seq[:2] + (9, ) + seq[2:]
print(tup)
分析记录07
解法1需要注意元组转换为列表后,才能使用insert方法在指定的位置插入元素。
解法2与列表一样,使用切片和"+"合并元组。
2022年6月15日 上午 阴天 心情 释放吧
如若转载,请注明出处:https://www.dawenbi.com/4648.html