当前位置: 首页 > 科技观察

Python列表生成的三种方法盘点

时间:2023-03-15 19:58:50 科技观察

1.前言列表生成是ListComprehensions,它是一个非常简单但功能强大的Python内置生成器,可以用来创建列表。2.案例分析生成列表[1,2,3,4,5,6,7,8,9,10]的三种方法可以使用list(range(1,11))。print(list(range(1,11)))如何生成[1x1,2x2,3x3,…,10x10]?1、第一种方法是循环:L=[]forxinrange(1,11):L.append(x*x)print(L)但是循环太麻烦了,列表生成器可以用一行语句代替生成上面列表的循环:print([x*xforxinrange(1,11)])写列表生成器的时候,把要生成的元素x*x放在前面,后面是for循环,列表可以创建,非常有用。多写几次,你很快就会熟悉这种语法。也可以在for循环后加一个if判断,这样就可以只过滤掉偶数的正方形:forxinrange(1,11):L.append(x*x)print([x*xforxinrange(1,11)ifx%2==0])2。使用两层循环,可以生成一个完整的排列L=[]forxinrange(1,11):L.append(x*x)print([m+nformin'ABC'fornin'XYZ'])三层或更多层的循环很少使用。3.使用列表生成,可以写出非常简洁的代码。比如列出当前目录下的所有文件和目录名可以通过一行代码实现:importos#导入os模块,后面会提到模块的概念print([dfordinos.listdir('.')])#os.listdir可以列出文件和目录for循环其实可以同时使用两个或多个变量,比如dict的items()可以同时迭代key和value:d={'x':'A','y':'B','z':'C'}fork,vind.items():print(k,'=',v)因此列表生成也可以使用两个变量来生成列表:d={'x':'A','y':'B','z':'C'}print([k+'='+vfork,vind.items()]finallyturnall将列表中的字符串转换为小写:L=['Hello','World','IBM','Apple']print([s.lower()forsinL])如果列表同时包含字符串和整数,因为有非字符串类型没有lower()方法,所以list生成会报错:L=['Hello','World',18,'Apple',None]print([s.lower()forsinL])使用内置的isinstance函数来确定变量是否ableisString:x='abc'y=123print(isinstance(x,str))print(isinstance(y,str))3.实践与思考请修改列表生成公式,并保证列表生成公式可以通过添加if语句Execute.#-*-coding:utf-8-*-L1=['Hello','World',18,'Apple',None]L2=???#Expectoutput:['hello','world','apple']print(L2)实践参考代码:L2=[s.lower()forsinL1ifisinstance(s,str)]运行结果:注意:使用列表生成公式,列表可以快速生成的,另一个可以从一个列表中导出一个列表,但是代码很简洁。4.小结本文以Python为基础,介绍列表生成方法,重点案例,讲解三种方法。不同方法的分析达到了相同的效果。结合实际案例注意事项,针对遇到的困难提供有效的解决方案。最后通过练习和思考,加深对列表生成的理解。欢迎大家积极尝试。有时候看别人实现很简单,但是到了自己实现的时候,总会出现各种各样的问题。不要野心太大,努力理解得更深刻。代码很简单,希望对大家学习有所帮助。本文转载自微信公众号《Go语言进阶学习》,可通过以下二维码关注。转载本文请联系Go语言进阶学习公众号。