Skip to Content
流畅的Python(第2版)
book

流畅的Python(第2版)

by Luciano Ramalho
April 2023
Intermediate to advanced
769 pages
25h 16m
Chinese
Posts & Telecom Press
Content preview from 流畅的Python(第2版)
330
12
>>> my_list = [[1, 2, 3], [40, 50, 60], [9, 8, 7]]
>>> import functools
>>> functools.reduce(lambda a, b: a+b, [sub[1] for sub in my_list])
60
这段代码有很多地道的用法:
lambda
reduce
和列表推导式。最终,这可能会变成人气
竞赛,因为它冒犯了讨厌
lambda
的人和看不上列表推导式的人——这两种人可都不少。
如果打算使用
lambda
,那么或许就不应该使用列表推导式——筛选除外,但这里不是
筛选。
下面是我给出的方案,这能讨得
lambda
拥护者的欢心。
>>> functools.reduce(lambda a, b: a + b[1], my_list, 0)
60
我没有参与那个话题,而且不会在真实的代码中使用上述方案,因为我非常不喜欢
lambda
表达式。这里只是为了举例说明不使用列表推导式可以怎么做。
第一个答复是
Fernando Perez
给出的,他是
IPython
的创建者,他的答案强调了
NumPy
支持
n
维数组和
n
维切片。
>>> import numpy as np
>>> my_array = np.array(my_list)
>>> np.sum(my_array[:, 1])
60
我觉得
Perez
的方案很棒,不过
Guy Middleton
推崇
Paul Rubin
Skip Montanaro
给出
的下述方案。
>>> ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Python高级编程(第2版)

Python高级编程(第2版)

Posts & Telecom Press, Michał Jaworski, Tarek Ziadé
Kafka权威指南(第2版)

Kafka权威指南(第2版)

Gwen Shapira, Todd Palino, Rajini Sivaram, Krit Petty
Python贝叶斯分析(第2版)

Python贝叶斯分析(第2版)

Posts & Telecom Press, Osvaldo Martin

Publisher Resources

ISBN: 9787115612366