![449fdacb61367bf26ed98cd3fac7d8b9.png](https://i-blog.csdnimg.cn/blog_migrate/84629e3337c95c11df4d8371d75521b2.png)
我其实一直不太看得明白写的很简短的代码,在读了几页《流畅的Python》后我明白了——是我太菜。周末花了点时间把自己一直不会用的列表推导式和生成器表达式好好看了下,整理一篇笔记,部分代码是参考了《流畅的Python》中的示例。
在搞明白这俩货之前,如果需要从两个数据源取出数据耦合起来,我大概率会把代码写成这样的德行——
for x in xs:
for y in ys:
x_y = (x, y)
嗯,要写三行,虽然确实很容易看懂意思,但确实不简洁,再加上经常看到别人写的代码里用到列表推导式和生成器表达式,就更加难受了……
列表推导式,List Comprehension,一般缩写为listcomps
生成器表达式,Generator Expression,一般缩写为genexps
掌握这两个东西,可以让代码更简短,也能让代码运行更省内存。
List Comprehension
给定一个数字,计算这个数字的平方,然后我们要对一堆数字做这个事情,有两个办法——
- 使用lambda函数+map函数
- 使用列表推导式
第一个法子,代码会写