Найти - Пользователи
Полная версия: lambda
Начало » Python для новичков » lambda
1 2
d3z0x77+rsmqbc
Почему лямбда возвращает int, а не юникод строку?
data = [1, 0, 3, 0, 9]
result = filter(lambda x: unicode(x) if x else None, data)
print(result)
py.user.next
она не int возвращает, а элемент

>>> filter(bool, [1, 0, 2, 0, 3])
[1, 2, 3]
>>>
bismigalis
заюзай map
Shaman
И ещё
>>> f1 = unicode
>>> f2 = lambda x: unicode(x)
>>> f1(123)
u'123'
>>> f2(456)
u'456'
d3z0x77+rsmqbc
Меня интересует не как исправить задачу, а почему так происходит. Потому что в теории она должна вернуть строку.
Shaman
Это где такая теория озвучена?
data = [1, 0, 3, 0, 9]
result = str(filter(lambda x: unicode(x) if x else None, data))
print(result)
d3z0x77+rsmqbc
Shaman
Если я не прав и вас не затруднит, объясни пожалуйста как все в действительности происходит.

На сколько я понимаю этот код, то там должна возвращаться строка.
Shaman
Функция filter в общем случае возвращает те элементы для которых указанная функция возвращает True, или её результат неявно преобразуется к True. На это недвусмысленно указал py.user.next.
d3z0x77+rsmqbc
Shaman
Это все я и так знал
Shaman
Очень на то непохоже. Как Вы узнали что лямбда возвращает int?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB