python3中的map对象返回的是迭代器,该迭代器用list()转列表之后,再次用list()转化时会返回空

您所在的位置:网站首页 python迭代器转列表 python3中的map对象返回的是迭代器,该迭代器用list()转列表之后,再次用list()转化时会返回空

python3中的map对象返回的是迭代器,该迭代器用list()转列表之后,再次用list()转化时会返回空

2023-08-10 03:13| 来源: 网络整理| 查看: 265

练习代码的时候,发现python3中的map()函数返回的可迭代对象,在用list()转成列表之后,再次用list()转列表的时候,获取的是空值(如下所示),所以查了一下python3的map()对象

>>> rList = [1,2,3,4,5]>>> resultList = map(lambda x: str(x), rList)>>> resultList>>> list(resultList)['1', '2', '3', '4', '5']>>> list(resultList)[]

python3中的map方法返回的是一个迭代器:

 

 

 迭代器在遍历取值时,每取一个值时,会调用内置的__next__方法指向下一个元素:

>>> resultList>>> rList = [1,2,3,4,5]>>> resultList = map(lambda x: str(x), rList)>>> resultList.__next__>>> resultList.__next__()'1'>>> resultList.__next__()'2'>>> resultList.__next__()'3'>>> resultList.__next__()'4'>>> resultList.__next__()'5'>>> resultList.__next__()Traceback (most recent call last): File "", line 1, in StopIteration>>> resultList.__next__()Traceback (most recent call last): File "", line 1, in StopIteration

那么在用list()方法转列表的时候,每转化一个元素时都会调用一次迭代器的__next__()方法,转化完之后,__next__对象指向的就是空了,

那么在此用list()转列表的时候,每一次用__next__()获取到的值仍然是空,所以就出现了前面的问题



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3