考虑我有一个元素数组,我想在其中创建一个新的'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
答案 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)