gpt4 book ai didi

python - Python的map函数可以调用对象成员函数吗?

转载 作者:IT老高 更新时间:2023-10-28 21:57:14 39 4
gpt4 key购买 nike

我需要做一些与此功能等效的事情:

for foo in foos:
bar = foo.get_bar()
# Do something with bar

我的第一直觉是使用 map,但这不起作用:

for bar in map(get_bar, foos):
# Do something with bar

我想用 map 实现的目标可行吗?我需要使用列表推导吗?最 Pythonic 的成语是什么?

最佳答案

使用 lambda:

for bar in map(lambda foo: foo.get_bar(), foos):

或者只是在您的实例类上使用实例方法引用:

for bar in map(Foo.get_bar, foos):

由于这是从评论中添加的,我想指出,这要求 foos 的项目是 Foo 的实例(即 all(isinstance (foo, Foo) for foo in foos) 必须为真),并且不仅像其他选项那样使用 get_bar 方法的类实例。仅此一项就足以有理由不将其包含在此处。

或者用methodcaller:

import operator
get_bar = operator.methodcaller('get_bar')
for bar in map(get_bar, foos):

或者使用生成器表达式:

for bar in (foo.get_bar() for foo in foos):

关于python - Python的map函数可以调用对象成员函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7750982/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com