Я думаю, что эта строка устарела - она не была обновлена для поведения Python 3 map
или для существования itertools.zip_longest
.
map
может принимать несколько аргументовфункция и несколько итераций аргументов:
>>> from operator import add
>>> list(map(add, [1, 2], [10, 20]))
[11, 22]
Вернемся к Python 2, если бы итераторы не были одинаковой длины, более короткие итерации были бы дополнены None
:
>>> map(lambda x, y: [x, y], [1, 2], [10]) # Python 2
[[1, 10], [2, None]]
но zip
и izip
по-прежнему останавливаются, когда самая короткая итерация останавливается:
>>> zip([1, 2], [10]) # still Python 2
[(1, 10)]
>>> list(itertools.izip([1, 2], [10])) # still Python 2
[(1, 10)]
Если вы хотите эмулировать поведение None-padding map
в вашей собственной функции, которая принимает несколько итераций,Вы могли бы расширить более короткие итерации с помощью padnone
перед использованием zip
или izip
.
Это стало менее полезным с введением itertools.izip_longest
в Python 2.6, который обеспечивает более удобный и безопасный способколодки в этом случае использования.С padnone
вы должны заранее знать, какие итерации были короче и нуждались в заполнении;с izip_longest
, в этом больше нет необходимости.
В Python 3 map
больше не * None
-пэды по умолчанию, так что отступы больше не эмулируют map
.