gpt4 book ai didi

Python:在map函数中调用方法

转载 作者:太空狗 更新时间:2023-10-30 00:29:53 29 4
gpt4 key购买 nike

map() 和列表理解大致等价:

map(function, list1)
[function(i) for i in list1]

如果我们要使用的函数是一个方法呢?

[i.function() for i in list1]
map(.function, list1) # error!
map(run_method(function), list1) # error!

我如何使用 map 执行这种操作?

最佳答案

你会使用 operator.methodcaller() :

from operator import methodcaller

map(methodcaller('function'), list1)

methodcaller() 接受额外的参数,然后将这些参数传递给被调用的方法; methodcaller('foo', 'bar', spam='eggs')(object) 等同于 object.foo('bar', spam='eggs').

如果 list1 中的所有对象都是同一类型或该类型的子类,并且您要调用的方法不带任何参数,您可以传入map 的未绑定(bind)方法作为要调用的函数。例如,要将列表中的所有字符串小写,您可以使用:

map(str.lower, list_of_strings)

其中 str.lowerstr 类型上的未绑定(bind)方法。

请注意,列表推导并不等同于此处的 map()map() 只能执行一个 循环,完全在 C 中。map()zip() 多次迭代参数,而 Python 3 中的 map() 本身就是一个迭代器。

另一方面,列表理解可以执行多个(嵌套)循环并添加过滤,左侧表达式可以是任何有效的 Python 表达式,包括嵌套列表理解。

关于Python:在map函数中调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21814230/

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