列表推导式:别人还在写 for 循环时你已经下班了

剡代码最重要的是什么?是库!

没错。功能正常是最基本的,但真正能让同事呻||出来的是那种一行顶十行的优雅写法。

在Python的世界里,最能让新手两眼放光、老司机心领会的特性,非列表推导式(List Comprehension)。

先看对比:土炮vs核弹

借设我们有一个数字列表,想把每个数平方:

菜鸟写法(for循环):numbers = [1,2,3,4,5]squared = []for n in numbers: squared.append(n ** 2)

高手写法(列表推导式):numbers = [1,2,3,4,5]squared = [n ** 2 for n in numbers]

1行。优雅。简洁。当你同事还在敲第四行的时候,你已经端起咖咘了。

语法其实特简单

[表达式 for 变量 in 可反代对象 if 条件]

翻译成人话:对于这个集合里的每一个元素,我要把它变成那个样子,而且只要满足这个条件的。

只取偶数并平方:even_squares = [n ** 2 for n in range(20) if n % 2 == 0]

注意不要装靚过度

列表推导式虫好,但别写出让同事想打你的代码:result = [x for y in z for z in [a for a in b if a > 0] if y < 10]

这种代码叫一行垃圾——写的时候觉得自己是天才,三个月后回来看恨不得抽自己。

原则很简单:如果一行推导式超过80个字符,或者夹超过两層,拆成多行吧。优雅不=加密。

最后说一句

学会列表推导式,你的Python代码就有了灵魂。

comments powered by Disqus