Я новичок в Python. Я использую Python 3.3.2, и мне сложно понять, почему следующий код:
strList = ['1','2','3']
intList = map(int,strList)
largest = max(intList)
smallest = min(intList)
Дает мне эту ошибку:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: min() arg is an empty sequence
Однако этот код:
strList = ['1','2','3']
intList = list(map(int,strList))
largest = max(intList)
smallest = min(intList)
Не дает мне никаких ошибок.
Моя мысль заключается в том, что когда intList присваивается возвращаемому значению функции map, он становится итератором, а не списком, согласно docs. И, возможно, в качестве побочного эффекта вызова max()
, итератор был итерирован до конца списка, заставляя Python полагать, что список пуст (я рисую из знания C здесь, я не знаком с тем, как итераторы действительно работаю на Python.) Единственное доказательство, которое я должен поддержать, это то, что для первого блока кода:
>>> type(intList)
<class 'map'>
тогда как для второго блока кода:
>>> type(intList)
<class 'list'>
Кто-нибудь может подтвердить или опровергнуть это для меня?