我需要做一些在功能上等同于此的东西:
for foo in foos:
bar = foo.get_bar()
# Do something with bar
Run Code Online (Sandbox Code Playgroud)
我的第一直觉是使用map,但这不起作用:
for bar in map(get_bar, foos):
# Do something with bar
Run Code Online (Sandbox Code Playgroud)
我正在努力实现的目标是什么map?我需要使用列表理解吗?这个Pythonic最常用的成语是什么?
Dan*_* D. 47
要么lambda:
for bar in map(lambda foo: foo.get_bar(), foos):
Run Code Online (Sandbox Code Playgroud)
或者foos:
for bar in map(Foo.get_bar, foos):
Run Code Online (Sandbox Code Playgroud)
或者使用生成器表达式:
import operator
get_bar = operator.methodcaller('get_bar')
for bar in map(get_bar, foos):
Run Code Online (Sandbox Code Playgroud)
我认为最干净的方法是for完全放弃-loop并使用列表理解:
bars = [foo.get_bar() for foo in foos]
Run Code Online (Sandbox Code Playgroud)
该答案与其他答案很接近,但不同之处在于该列表实际上是返回的,并且不在后续循环中使用。根据您的操作bars,您可能可以使用列表推导。
我认为map函数的lambdas可读性不强,除了开销map很大。
| 归档时间: |
|
| 查看次数: |
20308 次 |
| 最近记录: |