map itertools.imap 和 future builtins.map 的基本用法

map 函式是用於函數語言程式設計的 Python 內建函式中最簡單的函式。 map() 將指定的函式應用於 iterable 中的每個元素:

names = ['Fred', 'Wilma', 'Barney']

Python 3.x >= 3.0

map(len, names)  # map in Python 3.x is a class; its instances are iterable
# Out: <map object at 0x00000198B32E2CF8>

future_builtins 模組中包含一個相容 Python 3 的 map

Python 2.x >= 2.6

from future_builtins import map  # contains a Python 3.x compatible map()
map(len, names)                  # see below
# Out: <itertools.imap instance at 0x3eb0a20>

或者,在 Python 2 中,可以使用 itertools 中的 imap 來獲取生成器

Python 2.x >= 2.3

map(len, names)   # map() returns a list
# Out: [4, 5, 6]

from itertools import imap
imap(len, names)  # itertools.imap() returns a generator
# Out: <itertools.imap at 0x405ea20>

結果可以顯式轉換為 list,以消除 Python 2 和 3 之間的差異:

list(map(len, names))
# Out: [4, 5, 6]

map() 可以被等效的 列表 推導或 生成器表示式 替換 :

[len(item) for item in names] # equivalent to Python 2.x map()
# Out: [4, 5, 6]

(len(item) for item in names) # equivalent to Python 3.x map()
# Out: <generator object <genexpr> at 0x00000195888D5FC0>