剡代码最重要的是什么?是库!
没错。功能正常是最基本的,但真正能让同事呻||出来的是那种一行顶十行的优雅写法。
在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代码就有了灵魂。