當從python2轉到python3時,在對list進行處理後經常會遇到結果不正常,經過查找發現python2 和python3對list處理後返回對象會有一些差別:
在python2 中,map(), filter等對list進行處理的方法會返回一個list對象:
而在python3中, 會返回一個可迭代對象:
從以上我們可以發現python2對list 處理還是返回list 結果,可以無限迭代;
但是python3處理後會返回一個對應的可迭代對象,且類似於指針,迭代之後會從對象中清空。
所以在使用這些方法時需要謹慎,必要時請改成 列表生成式:
result = [x+1 for x in list1]