LINUX.ORG.RU
ФорумTalks

поясните про python3

 


0

2

во второй ветке можно было писать map(lambda x: smth, [somelist]) и на выходе получался обычный список. в третьей ветке для этого надо в явном виде вызывать функцию list(), т.к. map() возвращает объект с типом map. для чего так сделано? там все вычисления ленивые?

★★★★★

Да, для лени. Меня тоже раздражает вызывать list.

там все вычисления ленивые?

Точно не помню, но очень многое теперь построено на итераторах.

true_admin ★★★★★ ()

Чтобы не выделять память, очевидно. Да, ленивые, как и zip и сотоварищи.

x3al ★★★★★ ()

Для лени и из-за того, что не могут сделать нормальный интерфейс для итераторов (в кложе тоже коллекции ленивые, но всё удобно).

Ну и for-comprehension читабельнее:

list(map(fn, xs))
[fn(x) for x in xs]

reduce(operator.add, map(fn, filter(lambda x: x % 2 == 0, xs)))
reduce(operator.add, (fn(x) for x in xs
                      if x % 2 == 0))  

holuiitipun ()
Последнее исправление: holuiitipun (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.