开发者

How to apply a function to a collection of elements

开发者 https://www.devze.com 2022-12-23 07:21 出处:网络
Consider I have an array of开发者_StackOverflow中文版 elements out of which I want to create a new \'iterable\' which on every next applies a custom \'transformation\'. What\'s the proper way of doing

Consider I have an array of开发者_StackOverflow中文版 elements out of which I want to create a new 'iterable' which on every next applies a custom 'transformation'. What's the proper way of doing it under python 2.x?

For people familiar with Java, the equivalent is Iterables#transform from google's collections framework.

Ok as for a dummy example (coming from Java)

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


//use foos below


A generator expression:

(foobar(x) for x in S)


Another way of doing it:

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

That's the way I'd do it myself, but I'm kind of weird in that I actually like map.


Or by using 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)
0

精彩评论

暂无评论...
验证码 换一张
取 消