Использовать понимание списка или выражение генератора
[f(x, your_set) for x in your_list]
Если в результате вам не нужен список, а просто вычисляется ленивый итератор, вы можете использовать выражение генератора (или если вы имели в виду карту Python 3).
(f(x, your_set) for x in your_list)
Edit:
Для ваших функций это будет:
L = ['John', 'Jacob', 'Jingle all the way']
[foo(a, b=b) for a in L]
Понимания списка являются синтаксическим сахаром, заменяющим использование map
на lambda
. Если у вас есть одно из следующего:
L2 = map(lambda arg: f(arg) + arg, L1)
L2 = map(lambda (x,y): x + y, L1)
L2 = map(lambda <arg>: <expression>, L1)
Они могут быть переписаны как списки:
L2 = [f(arg) + arg for arg in L1]
L2 = [x + y for x, y in L1]
L2 = [<expression> for <arg> in L1]
Выражения генератора аналогичны, но вместо списка они возвращают ленивый итератор и пишутся с символами скобок вместо квадратных скобок. (И поскольку map
в Python 3 изменен на не возвращать списки, то его эквивалентом является выражение генератора.) Иногда список не нужен, например, когда вы хотите сделать:
','.join(map(lambda x: x.upper(), L))
Эквивалентное понимание списка:
','.join([x.upper() for x in L])
Но вам на самом деле не нужен список, поэтому вы можете просто сделать:
','.join(x.upper() for x in L)