Функция карты, возвращающая список, имеет преимущество сохранения набора текста, особенно во время интерактивных сеансов. Вы можете определить lmap
функцию (по аналогии с python2 imap
), которая возвращает список:
lmap = lambda func, *iterable: list(map(func, *iterable))
Тогда вызов lmap
вместо того, map
чтобы сделать работу:
lmap(str, x)
короче на 5 символов (30% в этом случае), чем list(map(str, x))
и, безусловно, короче, чем [str(v) for v in x]
. Вы можете создать аналогичные функции для filter
тоже.
Был комментарий к оригинальному вопросу:
Я бы предложил переименовать в Getting map (), чтобы получить список в Python 3. *, так как он применяется ко всем версиям Python3. Есть ли способ сделать это? - Meawoppl 24 января в 17:58
Это есть возможность сделать это, но это очень плохая идея. Просто для забавы, вот как вы можете ( но не должны ) делать это:
__global_map = map #keep reference to the original map
lmap = lambda func, *iterable: list(__global_map(func, *iterable)) # using "map" here will cause infinite recursion
map = lmap
x = [1, 2, 3]
map(str, x) #test
map = __global_map #restore the original map and don't do that again
map(str, x) #iterator
map()
был почти удален из языка, потому что нет причин использовать его для понимания списка илиfor
цикла.