Python, функции, выполняющиеся из списка и добавляемые в список с помощью функций - PullRequest
0 голосов
/ 03 ноября 2008

Как запустить функцию в цикле, чтобы все результаты попадали прямо в список, и есть ли способ запустить функцию, которая действует на все значения в списке?

Ответы [ 3 ]

7 голосов
/ 03 ноября 2008

Есть несколько способов запустить функцию в цикле, подобном этому - вы можете использовать понимание списка

test = list('asdf')
[function(x) for x in test]

и используйте этот результат

Или вы можете использовать функцию карты

test = list('asdf')
map(function, test)

Первый ответ более «питонический», а второй более функциональный.

EDIT: Второй способ также намного быстрее, так как он не запускает произвольный код для вызова функции, а напрямую вызывает функцию, используя map, что реализовано в C.

1 голос
/ 03 ноября 2008

Ваш вопрос требует уточнения.

запустить функцию в цикле

new_list= [yourfunction(item) for item in a_sequence]

запустить функцию, действующую на все значения в списке

Ваша функция должна иметь некоторую форму итерации в своем коде для обработки всех элементов последовательности, например:

def yourfunction(sequence):
    for item in sequence:
        …

Затем вы просто вызываете его с помощью последовательности (то есть списка, строки, итератора и т. Д.)

yourfunction(range(10))
yourfunction("a string")

YMMV.

0 голосов
/ 03 ноября 2008

В этом примере показано, как это сделать (запустить в интерпретаторе)

>>> def square(x):
...  return x*x
...
>>> a = [1,2,3,4,5,6,7,8,9]

>>> map(square,a)
[1, 4, 9, 16, 25, 36, 49, 64, 81]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...