当前位置: 首页 > 后端技术 > Python

Python高级用法

时间:2023-03-26 01:21:38 Python

创建字典1.创建一个空字典>>>dic={}>>>type(dic)2.直接赋值创建>>>dic={'spam':1,'egg':2,'bar':3}>>>dic{'bar':3,'egg':2,'spam':1}3.由关键字字典和关键字参数创建>>>dic=dict(spam=1,egg=2,bar=3)>>>dic{'bar':3,'egg':2,'spam':1}4。从两个元组的列表创建一个列表=[('spam',1),('egg',2),('bar',3)]>>>dic=dict(list)>>>dic{'bar':3,'egg':2,'spam':1}5.dict和zip结合创建>>>dic=dict(zip('abc',[1,2,3]))>>>dic{'a':1,'c':3,'b':2}6.通过字典理解创建>>>dic={i:2*iforiinrange(3)}>>>dic{0:0,1:2,2:4}7.通过dict.fromkeys()创建通常用于初始化字典,设置value的默认值>>>dic=dict.fromkeys(range(3),'x')>>>dic{0:'x',1:'x',2:'x'}8.其他>>>list=['x',1,'y',2,'z',3]>>>dic=dict(zip(list[::2],list[1::2]))>>>dic{'y':2,'x':1,'z':3}排序字典名称=['Alice','Tom','Harry','Jerry','Mike']分数=[[8,6,7],[6,7,5],[8,6,9],[5,7,4],[8,10,9]]dic={}len1=len(names)foriinrange(len1):dic[names[i]]=sum(scores[i])#dic1=dict(zip(names,scores))print(dic)#print(dic1)dic=dict(sorted(dic.items(),key=lambdax:x[1],reverse=True))print(dic)高阶函数#forl=[]foriinrange(0,11,2):l.append(i*i)print(l)#filterl1=list(filter(lambdax:x%2==0andpow(x,1/2)inrange(11),range(101)))print(l1)#mapl2=list(map(lambdax:x*x,range(0,11,2)))print(l2)#列表推导l3=[i*iforiinrange(0,11,2)]print(l3)#[0,4,16,36,64,100]#[0,4,16,36,64,100]#[0,4,16,36,64,100]#[0,4,16,36,64,100]奇怪的现象(生成一个两位数组)m=n=3test=[[0]*m]*nprint("test=",test)输出如下:test=[[0,0,0],[0,0,0],[0,0,0]]是不是好像一点问题都没有?一开始我也是这么想的,以为我在别的地方用错了函数,但是我试了一下:m=n=3test=[[0]*m]*nprint("test=",test)test[0][0]=233print("test=",test)输出如下:test=[[0,0,0],[0,0,0],[0,0,0]]test=[[233,0,0],[233,0,0],[233,0,0]]也就是说,在matrix=[array]*3操作中,只创建了3个对array的引用,所以一旦数组发生变化,矩阵中的三个列表也会随之发生变化。使用列表生成公式生成二维数组fromrandomimportrandintl=[[randint(0,11)foriinrange(5)]forjinrange(5)]print(l)