Python 列表解析
本文内容纲要:
作者博文地址:https://www.cnblogs.com/liu-shuai/
列表解析
根据已有列表,高效创建新列表的方式。
列表解析是Python迭代机制的一种应用,它常用于实现创建新的列表,因此用在[]中。
语法:
[expressionforiter_valiniterable]
[expressionforiter_valiniterableifcond_expr]
实例展示:
1要求:列出1~10所有数字的平方
2####################################################
31、普通方法:4>>>L=[]5>>>foriinrange(1,11):6...L.append(i**2)7...8>>>printL9[1,4,9,16,25,36,49,64,81,100]10####################################################112、列表解析12>>>L=[i**2foriinrange(1,11)]13>>>printL14[1,4,9,16,25,36,49,64,81,100]
1要求:列出1~10中大于等于4的数字的平方
2####################################################
31、普通方法:4>>>L=[]5>>>foriinrange(1,11):6...ifi>=4:7...L.append(i**2)8...9>>>printL10[16,25,36,49,64,81,100]11####################################################122、列表解析13>>>L=[i**2foriinrange(1,11)ifi>=4]14>>>printL15[16,25,36,49,64,81,100]
1要求:列出1~10所有数字的平方除以2的值
2####################################################
31、普通方法4>>>L=[]5>>>foriinrange(1,11):6...L.append(i**2/2)7...8>>>printL9[0,2,4,8,12,18,24,32,40,50]10####################################################112、列表解析12>>>L=[i**2/2foriinrange(1,11)]13>>>printL14[0,2,4,8,12,18,24,32,40,50]
1要求:列出"/var/log"中所有已'.log'结尾的文件2##################################################31、普通方法4>>>importos5>>>file=[]6>>>forfileinos.listdir('/var/log'):7...iffile.endswith('.log'):8...file.append(file)9...10>>>printfile11['anaconda.ifcfg.log','Xorg.0.log','anaconda.storage.log','Xorg.9.log','yum.log','anaconda.log','dracut.log','pm-powersave.log','anaconda.yum.log','wpa_supplicant.log','boot.log','spice-vdagent.log','anaconda.program.log']12##################################################132.列表解析14>>>importos15>>>file=[fileforfileinos.listdir('/var/log')iffile.endswith('.log')]16>>>printfile17['anaconda.ifcfg.log','Xorg.0.log','anaconda.storage.log','Xorg.9.log','yum.log','anaconda.log','dracut.log','pm-powersave.log','anaconda.yum.log','wpa_supplicant.log','boot.log','spice-vdagent.log','anaconda.program.log']
1要求:实现两个列表中的元素逐一配对。
21、普通方法:
3>>>L1=['x','y','z']4>>>L2=[1,2,3]5>>>L3=[]6>>>forainL1:7...forbinL2:8...L3.append((a,b))9...10>>>printL311[('x',1),('x',2),('x',3),('y',1),('y',2),('y',3),('z',1),('z',2),('z',3)]12####################################################132、列表解析:14>>>L1=['x','y','z']15>>>L2=[1,2,3]16L3=[(a,b)forainL1forbinL2]17>>>printL318[('x',1),('x',2),('x',3),('y',1),('y',2),('y',3),('z',1),('z',2),('z',3)]
1使用列表解析生成9*9乘法表
2
3print('\n'.join([''.join(['%s*%s=%-2s'%(y,x,x*y)foryinrange(1,x+1)])forxinrange(1,10)]))
说明:
以上实例,使用列表解析比使用普通方法的速度几乎可以快1倍。因此推荐使用列表解析。
本文内容总结:
原文链接:https://www.cnblogs.com/liu-shuai/p/6098227.html