今天在使用python map的过程中,发现了一个奇怪问题,map遍历完成后,再次访问map,发现map为空了,特记录下来,以备日后查看。

如下代码,期望的结果是每次从外循环进入内循环,map都从头开始进行遍历,但事实却不是这样,下面为代码:

outData = [[1, 3, 4], [2, 3, 5], [1, 2, 3, 5], [2, 5]]
outDataMap = map(set, outData)
data = [[1],[2],[3],[4],[5]]
dataMap = map(set, data)
for outElem in outDataMap:
print('outElem:', outElem)
for innElem in dataMap:
print('innElem:', innElem)

实际执行结果是:
outElem: {1, 3, 4}
    innElem: {1}
    innElem: {2}
    innElem: {3}
outElem: {2, 3, 5}
outElem: {1, 2, 3, 5}
期望结果是:
outElem: {1, 3, 4}
    innElem: {1}
    innElem: {2}
    innElem: {3}
outElem: {2, 3, 5}
    innElem: {1}
    innElem: {2}
    innElem: {3}
outElem: {1, 2, 3, 5}
    innElem: {1}
    innElem: {2}
    innElem: {3}
产生这种差异的原因在于:遍历完最后一个元素后,再次访问时会放回空列表

为了能持续正确的访问数据,需要将map list() 之后存在另外一个变量中。

正确代码如下:

outData = [[1, 3, 4], [2, 3, 5], [1, 2, 3, 5]]
outDataMap = map(set, outData)
data = [[1],[2],[3]]
dataMap = map(set, data)
dataList = list(dataMap)
for outElem in outDataMap:
print('outElem:', outElem)
for innElem in dataList:

---------------------
作者:飞鹰_天涯
来源:CSDN
原文:https://blog.csdn.net/kairen6645/article/details/80252824
版权声明:本文为博主原创文章,转载请附上博文链接!

最新文章

  1. Get Script Path in Shell
  2. Python:Sqlmap源码精读之解析xml
  3. Python模块之optparse
  4. 受限玻尔兹曼机(RBM)学习笔记(八)RBM 的评估
  5. BZOJ1070 修车-费用网络流
  6. struts2 maven整合tiles3
  7. 关于 Docker 镜像的操作,看完这篇就够啦 !(上)
  8. 【杂谈】FilterChain相关知识整理
  9. 建了个QQ群,不定期分享一些资料,欢迎加入
  10. [openjudge-动态规划]Maximum sum
  11. 单源最短路径算法——Bellman-ford算法和Dijkstra算法
  12. HashMap原理分析(JDK1.7.x之前)
  13. python简说(十八)导入模块
  14. VS2013 未找到与约束。。。
  15. ArcGIS模型构建器案例教程-批量复制工作空间所有要素类
  16. 第13章:MongoDB-聚合操作--初体验
  17. 『cs231n』线性分类器损失函数
  18. linux下解除端口占用
  19. adb命令模拟按键事件KeyCode
  20. 【转载】#349 - The Difference Between Virtual and Non-Virtual Methods

热门文章

  1. JS高级总结
  2. java 查询路径中所有文件夹和文件的名称,支持文件名模糊查询
  3. android HTTP镜像
  4. HTTPClient to use http/https protocol to send request
  5. C#导入c++ dll报找不到dll文件 masm32调用c++类库
  6. wsl
  7. CentOS 7 建立svn仓库 远程连接
  8. Docker 日志都在哪里?怎么收集?
  9. import os, glob, fnmatch--Python os/glob/fnmatch主要函数总结
  10. FTP做作业用到的知识点: