I'm new to Python. I'm using Python 3.3.2 and I'm having a hard time figuring out why the following code:
strList = ['1','2','3']
intList = map(int,strList)
largest = max(intList)
smallest = min(intList)
Gives me this error:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: min() arg is an empty sequence
However this code:
strList = ['1','2','3']
intList = list(map(int,strList))
largest = max(intList)
smallest = min(intList)
Gives me no errors at all.
My thought is that when intList is assigned to the return value of the map function, it becomes an iterator rather than a list, as per the docs. And perhaps as a side effect of calling max()
, the iterator has been iterated to the end of the list, causing Python to believe the list is empty (I'm drawing from C knowledge here, I'm not familiar with how iterators truly work in Python.) The only evidence I have to support this is that, for the first block of code:
>>> type(intList)
<class 'map'>
whereas for the second block of code:
>>> type(intList)
<class 'list'>
Can someone confirm or deny this for me please?
Question&Answers:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…