列表推导式与三个好帮手
约 10 分钟
一行写完一个循环:第一章用 for 循环逐个处理列表,Python 还有一种更紧凑的写法叫列表推导式:
squares = [x * x for x in range(10)]
一行就得到 0 到 9 的平方列表。读作「对每个 x,算 x 乘 x,装进列表」。《动手学深度学习》的代码里这种写法随处可见,看懂它,书里的数据处理代码就顺了。
还能加条件:[x for x in range(20) if x % 2 == 0] 只留偶数——for 管「逐个取」,if 管「要不要」,各司其职。
三个好帮手:enumerate 在遍历时同时给编号——for i, h in enumerate(heights),i 是序号、h 是身高;zip 把两个列表像拉链一样并起来——for name, h in zip(names, heights) 一次取出一对;sorted 排序——sorted(scores, reverse=True) 从高到低。
类比:推导式像食堂的流水线——餐盘(列表)从头走到尾,每个位置自动完成「取料、加工、装盘」,比一盘一盘手工做快得多,也更不容易出错。
常见误区:为了炫技把推导式写得很长很绕。超过一行的逻辑,老老实实写普通 for 循环,可读性永远排第一。
练一练:用列表推导式把全家身高(米)换算成厘米,再用 enumerate 打印「第 1 位:175 厘米」这样的清单。
小纸条
用列表推导式换算全家身高,再用 enumerate 打印带编号的清单
登录 后可看答案