列表生成式
故名思议,就是创建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()方法)
总结
「列表生成式」的写法其实就是把以前的笨方法的处理,前置了,并且基于这个思路再往后边添加判断,或者是另外的循环。
写法也是比较简单的,大家可以多多练习一下,很快就能上手哦