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

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

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

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

>>> resultList
<map object at 0x0000021E91BFEEB8>
>>> rList = [1,2,3,4,5]
>>> resultList = map(lambda x: str(x), rList)
>>> resultList.__next__
<method-wrapper '__next__' of map object at 0x0000021E91F2A978>
>>> resultList.__next__()
'1'
>>> resultList.__next__()
'2'
>>> resultList.__next__()
'3'
>>> resultList.__next__()
'4'
>>> resultList.__next__()
'5'
>>> resultList.__next__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>> resultList.__next__()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration

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

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

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

  1. 将List集合中的map对象转为List<对象>形式--封装类

    import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Li ...

  2. 13-python基础—python3中的map()

    map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表. 通俗解释: m ...

  3. Java中遍历Map对象的方法

    方法一: 在for-each循环中使用entries来遍历 这是最常见的遍历方式,在需要获取key和value时使用. Map<Integer, Integer> map = new Ha ...

  4. java中遍历map对象的多种方法

    在Java中如何遍历Map对象   How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有ma ...

  5. 处理 WebService 中的 Map 对象

    最近,我们讨论了关于 WebService 的相关问题.目前在 Smart 中,可发布两种类型的 WebService,它们是:SOAP 服务 与 REST 服务,您可以根据需要自由选择. 今天,我要 ...

  6. Java中遍历Map对象的4种方法

    java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等). HashMap<Inte ...

  7. JS中的Map对象

    1,js创建map对象 var map = new Map(); 2.将键值对放入map对象 map.set("key",value) map.set("key1&quo ...

  8. js中的Map对象的简单示例

    es6提供一个对象Map, 其功能类似于java中的Map, 下面是java中的Map和js中的Map的简单对比: js中的Map.set()相当于java中的Map.put(), js中的Map.s ...

  9. Js中,Map对象的使用

    1.定义 键/值对的集合. 2.语法 mapObj = new Map() 3.备注 集合中的键和值可以是任何类型.如果使用现有密钥向集合添加值,则新值会替换旧值. 4.属性 构造函数 :指定创建映射 ...

随机推荐

  1. sudo apt-get 与 yum 常用命令

    yum -RedHat:CentOS... -xxx.rpmsudo apt-get  -Debian:Ubuntu...   -xxx.deb 安装工具rpm -ivh yum-2.0.4-1.rh ...

  2. linux 安装盘作为 repo

    1) CentOS 7.7 安装完之后, /etc/yum.repos.d 下面有很多.repo. 其中有一个CentOS-Media.repo. 编辑文件把enabled 改成 1 . 然后把其他. ...

  3. 记 2019蓝桥杯校内预选赛(JAVA组) 赛后总结

    引言 好像博客好久没更新了 哈哈哈哈哈 趁现在有空更新一波 不知道还有没有人看 确实该记录一下每天做了什么了 不然感觉有些浑浑噩噩了 比赛介绍 全称: 蓝桥杯全国软件和信息技术专业人才大赛 蓝桥杯 实 ...

  4. [2019BUAA软工助教]下半学期改进计划

    [2019BUAA软工助教]下半学期改进计划 结合[2019BUAA软工助教]答黄衫同学,经过26日晚陈彦吉.刘畅.赵奕.李庆想四位助教的讨论,最终整理了以下这份计划 一.技术博客 各个团队在开发的过 ...

  5. 一段完整的创建表格的SQL代码

    一段完整的创建表格的SQL代码 使用SQL语句创建一张表,不仅可以可以快速熟悉SQL语句,还可以从这看出一个人对该技能点的熟悉程度. 这里先说明几点: PRIMARY KEY:主键,一张表中只允许有一 ...

  6. Spring @CrossOrigin 通配符 解决跨域问题

    @CrossOrigin 通配符 解决跨域问题 痛点: 对很多api接口需要 开放H5 Ajax跨域请求支持 由于环境多套域名不同,而CrossOrigin 原生只支持* 或者具体域名的跨域支持 所以 ...

  7. oracle的instr()函数

    我们知道很多语言都提供了indexOf()和lastIndexOf()函数,以便能查找某个字符在某个字符串中的出现的位置和最后一次出现的位置. 但是Oracle没有提供这两个函数,事实上,它提供了一个 ...

  8. Elastic Beats介绍

    需要学习的地方:概念,用法,模块使用 Elastic Beats介绍 Elastic Stack传统上由三个主要组件(Elasticsearch,Logstash和Kibana)组成,早已脱离了这种组 ...

  9. OpenGL入门1.4:纹理/贴图Texture

    每一个小步骤的源码都放在了Github 的内容为插入注释,可以先跳过 前言 游戏玩家对Texture这个词应该不陌生,我们已经知道了怎么为每个顶点添加颜色来增加图形的细节,但,如果想让图形看起来更真实 ...

  10. 对象数组自定义排序--System.Collections.ArrayList.Sort()

    使用System.Collections.ArrayList.Sort()对象数组自定义排序 其核心为比较器的实现,比较器为一个类,继承了IComparer接口并实现int IComparer.Com ...