列表推导式:Python 程序员的一行式快乐

Python基础 Jun 15, 2020

先讲个段子

有个 Python 程序员去面试,面试官说:"请写一个循环,把 1 到 10 的平方放进列表。" 程序员刷刷刷写下:squares = [x**2 for x in range(1, 11)]

什么是列表推导式?

它让你用一行代码完成 for 循环 + append 的活儿。

# 传统写法(像写 Java 一样累):
squares = []
for x in range(1, 11):
    squares.append(x ** 2)

# 列表推导式(像写诗一样优雅):
squares = [x**2 for x in range(1, 11)]
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

还能加条件

even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
# [4, 16, 36, 64, 100]

语法顺序:先写表达式,再写循环,最后写条件。就像点奶茶:先选口味,再说要什么料,最后说去不去冰。

但是!别走火入魔

如果你发现一行代码长得像天书,请老老实实写 for 循环。代码是写给人看的,不是用来参加“最短代码大赛”的。

送你一句:"能写一行不写四行,一行太长就写回四行"

Tags