python学习笔记-tip22(高级特性-列表生成式)

列表生成式

故名思议,就是创建list的生成式,通过这个「列表生成式」可以得到一个list

那么我们没有用 「列表生成式」的之前,我们会使用比较笨的方法去创建list,如

    nums=[1,2,3,4,5,6]

或者通过range

    nums=list(range(6))

除了这两种方法之外,好像没有别的办法了
但是列表生成式的出现,让我们有了新方法

列表生成式的写法

我们以实际例子来看:
比如我们想定义一个

[1*1,2*2,3*3,4*4,5*5...10*10]

这样的list,那么我们先用笨方法实现以下

    nums=[]
    for i in range(1,11):
          nums.append(i*i)

这样就能把nums填充好,如下示例图所示:


看着其实也不是很复杂,但是 我们现在用「列表生成式」来试一下

      nums=[i*i for i in range(1,11)]

这样就可以了,是不是很简单
我们来验证一下



发现,果然跟我们用笨方法实现的一样。
那么接下来我们来看看「列表生成式」的书写规律

「列表生成式」的书写规律

  nums=[i*i for i in range(1,11)]

我们对比“笨方法”和“好方法”的区别,发现
写列表生成式时,把要生成的元素" i*i "放到前面,后面跟for循环,就可以把list创建出来

除此之外,在「列表生成式」的for循环之后,还可以添加判断,比如我们可以筛选出只有偶数的结果,写法如下

  nums=[i*i for i in range(1,11) if i%2==0]

执行效果图如下


除了添加条件判断,还可以实现双层循环,写法如下

    arrays=[m+n for m in 'ABC' for n in '123']

效果图如下


当然,多层的循环也是可以实现的,只不过用处不大

通过「列表生成式」实现的有用的小案例

  • 展示当前目录下的所有文件名和目录名(需用到os模块)


  • for循环使用两个变量遍历dict


  • 把一个list中的字符串变成小写(用到了字符串的lower()方法)


总结

「列表生成式」的写法其实就是把以前的笨方法的处理,前置了,并且基于这个思路再往后边添加判断,或者是另外的循环。
写法也是比较简单的,大家可以多多练习一下,很快就能上手哦

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容