Форум сайта python.su
0
Почему лямбда возвращает int, а не юникод строку?
data = [1, 0, 3, 0, 9] result = filter(lambda x: unicode(x) if x else None, data) print(result)
Офлайн
857
она не int возвращает, а элемент
>>> filter(bool, [1, 0, 2, 0, 3]) [1, 2, 3] >>>
Офлайн
47
заюзай map
Офлайн
88
И ещё
>>> f1 = unicode >>> f2 = lambda x: unicode(x) >>> f1(123) u'123' >>> f2(456) u'456'
Офлайн
0
Меня интересует не как исправить задачу, а почему так происходит. Потому что в теории она должна вернуть строку.
Офлайн
88
Это где такая теория озвучена?
data = [1, 0, 3, 0, 9] result = str(filter(lambda x: unicode(x) if x else None, data)) print(result)
Офлайн
0
Shaman
Если я не прав и вас не затруднит, объясни пожалуйста как все в действительности происходит.
На сколько я понимаю этот код, то там должна возвращаться строка.
Офлайн
88
Функция filter в общем случае возвращает те элементы для которых указанная функция возвращает True, или её результат неявно преобразуется к True. На это недвусмысленно указал py.user.next.
Отредактировано Shaman (Май 20, 2014 12:58:57)
Офлайн
0
Shaman
Это все я и так знал
Офлайн
88
Очень на то непохоже. Как Вы узнали что лямбда возвращает int?
Офлайн