zoukankan      html  css  js  c++  java
  • 【转】python3 内循环中遍历map,遍历一遍后再次进入内循环,map为空

    今天在使用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
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Array中数据强制数据类型转换
    去除socket编程当中接收到的多余符\0
    <转>在 ASP.NET 中执行 URL 重写
    小牛生产小牛的问题解决集粹
    SAP ABAP鸟瞰【AV+PPT】
    cx_Oracle说:Python访问Oracle并不难
    resolve.conf引起登录HPUX的CDE故障
    HPUX 11i v2安装使用python 2.5.2
    HPUX下使用python发送邮件
    HPUX 11i v2上Oracle10.2基本安装指南
  • 原文地址:https://www.cnblogs.com/lokwongho/p/10051093.html
Copyright © 2011-2022 走看看