Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:为什么我不能将map对象转换为list_Python_Python 3.x - Fatal编程技术网

Python:为什么我不能将map对象转换为list

Python:为什么我不能将map对象转换为list,python,python-3.x,Python,Python 3.x,我在将地图转换为列表时遇到问题,因为它可以转换为集合 list_nums_2 = [2, 4, 5, 9, 8, 7, 6, 3, 1, 0] evens = filter(lambda a: a % 2 == 0, list_nums_2) print(set(evens)) # Out: {0, 2, 4, 6, 8} print(list(evens)) # Out: [] 我知道这并不是因为它已经被转换成set了,因为从下面可以清楚地看到set可以被转换成list set_1 = {

我在将地图转换为列表时遇到问题,因为它可以转换为集合

list_nums_2 = [2, 4, 5, 9, 8, 7, 6, 3, 1, 0]
evens = filter(lambda a: a % 2 == 0, list_nums_2)
print(set(evens))  # Out: {0, 2, 4, 6, 8}
print(list(evens)) # Out: []
我知道这并不是因为它已经被转换成set了,因为从下面可以清楚地看到set可以被转换成list

set_1 = {2, 3, 4, 5, 6}

print(list(set_1))  # Out: [2, 3, 4, 5, 6]
运行
set(evens)
时,它会消耗
过滤器中的所有项。因此,当您执行
list(evens)
时,没有可用的项目,并且返回一个空列表

filter
对象是一个迭代器,可以对其调用
next()
,以获取下一项:

>>> evens = filter(lambda a: a % 2 == 0, list_nums_2)
>>> evens
<filter object at 0x7f2f4c309710>
>>> next(evens)
2
>>> next(evens)
4
>>> next(evens)
8
>>> next(evens)
6
>>> next(evens)
0
>>> next(evens)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> 
evens=filter(lambda:a%2==0,list\u nums\u 2) >>>埃文斯 >>>下一个(晚上) 2. >>>下一个(晚上) 4. >>>下一个(晚上) 8. >>>下一个(晚上) 6. >>>下一个(晚上) 0 >>>下一个(晚上) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 停止迭代 >>>

异常是因为
filter
对象中没有更多的项。

在Python 3.x中
filter
返回迭代器。将其传递给
集的构造函数将使用它。