Python 如何将函数应用于元素集合
假设我有一个元素数组,我想从中创建一个新的“iterable”,它在每一个元素上应用一个自定义的“transformation”。在Python2.x下,正确的方法是什么 对于熟悉Java的人来说,等价物是来自google集合框架的Iterables转换 作为一个虚拟示例(来自Java),OkPython 如何将函数应用于元素集合,python,Python,假设我有一个元素数组,我想从中创建一个新的“iterable”,它在每一个元素上应用一个自定义的“transformation”。在Python2.x下,正确的方法是什么 对于熟悉Java的人来说,等价物是来自google集合框架的Iterables转换 作为一个虚拟示例(来自Java),Ok Iterable foos=Iterables.transform(字符串,新函数() { 公共Foo应用(字符串){ 返回新的Foo(字符串); } }); //使用下面的foos 生成器表达式: (f
Iterable foos=Iterables.transform(字符串,新函数()
{
公共Foo应用(字符串){
返回新的Foo(字符串);
}
});
//使用下面的foos
生成器表达式:
(foobar(x) for x in S)
生成器表达式:
(foobar(x) for x in S)
或者使用map()
:
或者使用map()
:
另一种方法是:
from itertools import imap
my_generator = imap(my_function, my_iterable)
这是我自己做的方式,但我有点奇怪,因为我实际上喜欢另一种方式:
from itertools import imap
my_generator = imap(my_function, my_iterable)
这是我自己会做的,但我有点奇怪,因为我实际上喜欢
map
一些具体的例子会很有用。一些具体的例子会很有用。请注意,问题是要求惰性评估;genexp更合适。不否决,因为这是一个有效的(但经过评估的)备选方案。也就是说,即使是对于急切的评估,列表理解也可能更为惯用。你是对的,我没有达到最初的目的。为了完整起见,我把它留在这里;genexp更合适。不否决,因为这是一个有效的(但经过评估的)备选方案。也就是说,即使是对于急切的评估,列表理解也可能更为惯用。你是对的,我没有达到最初的目的。为了完整起见,我把它留在这里。+1表示Python中序列的延迟计算转换的惯用方式。+1表示Python中序列的延迟计算转换的惯用方式。不要为使用Python的函数方面而感到内疚!不要为使用Python的功能方面而感到内疚!