Как запустить операцию над коллекцией в Python и собрать результаты? - PullRequest
4 голосов
/ 10 марта 2009

Как запустить операцию над коллекцией в Python и собрать результаты?

Итак, если у меня есть список из 100 чисел, и я хочу запустить такую ​​функцию для каждого из них:

Operation ( originalElement, anotherVar ) # returns new number.

и соберите результат примерно так:

результат = другой список ...

Как мне это сделать? Может быть, с помощью лямбды?

Ответы [ 3 ]

12 голосов
/ 10 марта 2009

Список пониманий. В Python они выглядят примерно так:

a = [f(x) for x in bar]

Где f (x) - некоторая функция, а bar - последовательность.

Вы можете определить f (x) как частично примененную функцию с такой конструкцией, как:

def foo(x):
    return lambda f: f*x

Который вернет функцию, которая умножает параметр на х. Тривиальный пример этого типа конструкции, используемой в понимании списка, выглядит так:

>>> def foo (x):
...     return lambda f: f*x
... 
>>> a=[1,2,3]
>>> fn_foo = foo(5)
>>> [fn_foo (y) for y in a]
[5, 10, 15]

Хотя я не представляю, как использовать такую ​​конструкцию в каких-то, но довольно эзотерических случаях. Python не является настоящим функциональным языком, поэтому он имеет меньше возможностей для создания хитрых трюков с функциями более высокого порядка, чем, скажем, Haskell. Вы можете найти приложения для этого типа конструкции, но на самом деле это не , что pythonic. Вы можете добиться простого преобразования с помощью чего-то вроде:

>>> y=5
>>> a=[1,2,3]
>>> [x*y for x in a]
[5, 10, 15]
1 голос
/ 10 марта 2009

Другой (несколько устаревший) способ сделать это:

def Kevin (V): возврат v * v

vals = диапазон (0,100)

Карта (Кевину Vals)

0 голосов
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...