gpt4 book ai didi

python - map 函数返回的列表在使用一次后消失

转载 作者:IT老高 更新时间:2023-10-28 21:11:31 26 4
gpt4 key购买 nike

我是 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 函数的返回值时,它变成了一个迭代器而不是一个列表,根据 the docs .也许作为调用 max() 的副作用,迭代器已经迭代到列表的末尾,导致 Python 认为列表是空的。 (我在这里借鉴了 C 知识。我不熟悉迭代器在 Python 中的真正工作方式。)我必须支持这一点的唯一证据是,对于第一个代码块:

>>> type(intList)
<class 'map'>

而对于第二个代码块:

>>> type(intList)
<class 'list'>

有人可以帮我确认或否认吗?

最佳答案

你完全正确。在 Python 3 中,map 返回一个迭代器,您只能迭代一次。如果你第二次迭代一个迭代器,它会立即引发 StopIteration ,就好像它是空的一样。 max 消耗整个事物,而 min 将迭代器视为空。如果需要多次使用元素,则需要调用 list 来获取列表而不是迭代器。

关于python - map 函数返回的列表在使用一次后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21715268/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com