2016-11-17 2 views
1

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

a = [1,2,3,4] 
def f(x): 
    if x % 2 == 0: 
    return x 
    else: 
    return 
print map(f,a) 
+1

Это не то, что вы можете сделать исключительно с помощью 'map' и' lambda'. Лямбда-выражения (и вообще функции/методы) не могут ничего вернуть, они возвращают что-то или «Нет». В лучшем случае, вы можете получить '[None, 2, None, 4]' - вам нужен шаг 'filter', или просто используйте понимание списка' [x for x in a if x% 2 == 0] ' , – jonrsharpe

ответ

0

Ваш возвращает map(f,a) вызов:

[None, 2, None, 4] 

Здесь соответствующие lambda функции заменить f в map() и возвращать тот же результат:

>>> map(lambda x:None if x%2 else x, a) 
[None, 2, None, 4] 

Если вы не хотите None быть частью списка , используйте filter() вместо map() как:

>>> filter(lambda x: not x%2, a) 
[2, 4] 
2

filter здесь прекрасно работает.

>>> print filter(lambda x: x % 2 == 0, [1,2,3,4]) 
[2, 4] 

Вы также можете использовать список. Важным выводом является то, что функциональная концепция map заключается в применении преобразования к каждому элементу итерируемого типа (1 к 1 отношение).

Где в качестве фильтра выполняется именно то, что вам требуется, либо сохранение или отбрасывание элементов на основе условного выражения. Пожалуйста, обратитесь к использованию here.

Смежные вопросы