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