【轉】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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM