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
返回迭代器。将其传递给集的构造函数将使用它。