Ich bin neu bei Python. Ich verwende Python 3.3.2 und ich habe eine harte Zeit, herauszufinden, warum der folgende Code:Die von der Kartenfunktion zurückgegebene Liste verschwindet nach einmaliger Verwendung.
strList = ['1','2','3']
intList = map(int,strList)
largest = max(intList)
smallest = min(intList)
gibt mir diese Fehlermeldung:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: min() arg is an empty sequence
jedoch diesen Code:
strList = ['1','2','3']
intList = list(map(int,strList))
largest = max(intList)
smallest = min(intList)
Gibt mir keine Fehler überhaupt.
Mein Gedanke ist, dass, wenn IntList dem Rückgabewert der Map-Funktion zugewiesen ist, es zu einem Iterator anstatt einer Liste wird, wie the docs. Und vielleicht als Nebeneffekt von max()
, wurde der Iterator bis zum Ende der Liste iteriert, was Python glauben lässt, dass die Liste leer ist (Ich zeichne hier von C-Wissen, ich bin nicht vertraut mit der Funktionsweise von Iteratoren . in Python) der einzige Beweis, den ich dies zu unterstützen, ist, dass für den ersten Codeblock:
>>> type(intList)
<class 'map'>
während für den zweiten Block des Codes:
>>> type(intList)
<class 'list'>
Kann jemand bestätigen oder diese verweigern für mich bitte?
Sie können auch Tupel aufrufen oder auf Kartenobjekt setzen, wenn es Ihren Zwecken besser entspricht als Liste – fanny