Что здесь происходит?
>>> list(map(lambda *x: x, *map(None, 'abc')))
Traceback (most recent call last):
File "<pyshell#52>", line 1, in <module>
list(map(lambda *x: x, *map(None, 'abc')))
TypeError: type object argument after * must be an iterable, not map
Игнорируйте бессмысленность кода. Это сообщение об ошибке "итерируемый, а не карта". Карты являются итерабельными, не так ли?
И если я заменил None
на str
, все это прекрасно работает:
>>> list(map(lambda *x: x, *map(str, 'abc')))
[('a', 'b', 'c')]
Итак, теперь Python не имеет проблемы с map
.
Это происходит в моем Python 3.6.1. Мой Python 3.5.2 вместо этого возвращает ожидаемый TypeError: 'NoneType' object is not callable
. И googling "должен быть итерируемым, а не карточным" не находит никаких результатов. По-видимому, это что-то появилось совсем недавно.
Это просто ошибка Python? Или есть смысл в этом?
Обновление: Сообщить об ошибке, как это было предложено.