如何将函数应用于元素集合

时间:2010-03-16 22:29:17

标签: python

考虑我有一个元素数组,我想在其中创建一个新的'iterable',它在每个 next 上应用自定义'转换'。在python 2.x下执行此操作的正确方法是什么?

对于熟悉Java的人来说,等同于来自google的集合框架的Iterables#转换。

好的例子(来自Java)

Iterable<Foo> foos = Iterables.transform(strings, new Function<String, Foo>()
    {
        public Foo apply(String string) {
        return new Foo(string);
        }
    });


//use foos below

3 个答案:

答案 0 :(得分:5)

生成器表达式:

(foobar(x) for x in S)

答案 1 :(得分:3)

另一种方法:

from itertools import imap
my_generator = imap(my_function, my_iterable)

这就是我自己做的方式,但我有点奇怪,因为我实际上喜欢 map

答案 2 :(得分:1)

或者使用map()

def foo(x):
   return x**x   

for y in map(foo,S):
   bar(y)

# for simple functions, lambda's are applicable as well
for y in map(lambda x: x**x,S):
   bar(y)