Python2與Python3的map()


1. map()函數

  • Python2中,map(func, seq1[,seq2[...[,seqn)將func作用於seq*的每個序列的索引相同的元素,並最終生成一個[func(seq1[0], seq2[0],....seqn[0]), func(seq1[1], seq2[1],...seqn[1])...]的列表。但在Python3中,map()函數生成一個map類型的對象。

  Python2中map直接返回作用后的元素的列表

1 >>> a = [1,3,5,7,9] 2 >>> b = [2,4,6,8,0] 3 >>> map(lambda x, y: x+y, a, b) 4 [3, 7, 11, 15, 9] 5 >>> 

  Python3中map返回的則是一個map對象

1 >>> a = [1, 3, 5, 7, 9] 2 >>> b = [2, 4, 6, 8, 0] 3 >>> map(lambda x,y: x + y, a, b) 4 <map object at 0x7f53640e3588> 5 >>> 

  如果想得到列表對象,則還需要調用list轉化為列表對象

1 >>> list(map(lambda x,y: x + y, a, b)) 2 [3, 7, 11, 15, 9] 3 >>> 
  •  Python2中,map()函數的func可以為None,如map(seq1,seq2[,...[,seqn),其作用類似於將seq*中的對應索引的值取出作為一個元組,最終返回一個包含多個元組的列表。而Python3中,map()函數如果不指定func,則最終對返回的map對象轉換時就會拋"TypeError"
1 >>> a = [1, 3, 5, 7, 9]
2 >>> b = [2, 4, 6, 8, 0]
3 >>> list(map(a,b))
4 Traceback (most recent call last):
5   File "<stdin>", line 1, in <module>
6 TypeError: 'list' object is not callable
7 >>> 

  因此,如果map()函數的func參數不指定的話,需要使用zip(seq1, seq2[,...[,seqn)函數代替


免責聲明!

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



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