下面我们用提出问题,解决问题的方法去给大家讲什么是python列表式
问题一:生成一个由1-10的平方组成的列表
刚听到这个问题时,你的第一反应是不是用for循环,如果是的话,那么我推荐一下今天介绍的列表生成式
答:
print([i**2 for i in range(1,11)]) #[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
一行代码就搞定了,是不是特方便!!!
至于这行代码我们要去怎么理解呢,可以看见的是,i**2后面就是一个正常的for循环,而前面i**2就是for循环里面的执行的语句,最后再用一个中括号[]包起来就是一个列表生成式啦,是不是很简单!!!
下面我们可以进阶一下
问题二:生成一个1-10的偶数的平方生成的列表
听到这个问题的时候你想到了for循环里面嵌套的if判断没有呀
答:
print([i**2 for i in range(1,11) if i%2 == 0]) #[4, 16, 36, 64, 100]
好的,这就是上面问题的解法 so easy
再进阶一下
问题三:我们将1-10中每个偶数的二次方,三次方,四次方单独生成一个列表(一共五个列表)并且都包含在一个列表中
这个问题稍稍有点难度,小伙伴们想到答案木有
答:
print([[i**n for n in range(2,5)] for i in range(1,11) if i%2 == 0])
#[[4, 8, 16], [16, 64, 256], [36, 216, 1296], [64, 512, 4096], [100, 1000, 10000]]
欧克,进阶,进阶,进阶!!!
问题四:我们拿到问题三中生成的列表,判断里面的元素是否是三的倍数,是的话返回True,否则返回False(最终的形式不变,就里面的数字变成了True or False)
最后一个问题喽,好好想想
答
print([[True if i**n % 3 == 0 else False for n in range(2,5)] for i in range(1,11) if i%2 == 0])
#[[False, False, False], [False, False, False], [True, True, True], [False, False, False], [False, False, False]]
到这里,强大的列表生成式就已经讲完了,小伙伴们要是有一些其他的想法可以在评论区留言和小编交流哦