map(function, sequence[, sequence, ...]) -> list
返回將函數應用於參數序列 的結果列表。 如果多於一個序列被給出時, 函數被調用用由每個序列的相應 項的參數列表中,當不是所有 序列具有相同的長度缺失的值代無。如果函數是無,返回的序列(或如果超過一個序列的元組的列表)的 的項目清單。
我覺得效果是最好的嘲諷了inputs
和offline_optimize
所示:
import string
inputs = [dict([(s, i) for i, s in enumerate(string.letters[:14])])] * 12
def offline_optimize(*args, **kwargs):
return [("args", args),
("args_count", len(args)),
("kwargs", kwargs),
("kwargs_count", len(kwargs))]
什麼inputs
樣子:
>>> print len(inputs), len(inputs[0]), inputs[0]
12 14 {'A': 0, 'C': 2, 'B': 1, 'E': 4, 'D': 3, 'G': 6, 'F': 5, 'I': 8, 'H': 7, 'K': 10, 'J': 9, 'M': 12, 'L': 11, 'N': 13}
你這樣做:
>>> mapped = map(offline_optimize, *inputs)
>>> print len(mapped), mapped[0]
14 [('args', ('A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A')), ('args_count', 12), ('kwargs', {}), ('kwargs_count', 0)]
你想要做到這一點:
>>> mapped = map(lambda x: offline_optimize(**x), inputs)
>>> print len(mapped), mapped[0]
12 [('args',()), ('args_count', 0), ('kwargs', {'A': 0, 'C': 2, 'B': 1, 'E': 4, 'D': 3, 'G': 6, 'F': 5, 'I': 8, 'H': 7, 'K': 10, 'J': 9, 'M': 12, 'L': 11, 'N': 13}), ('kwargs_count', 14)]
你真的想要使用列表解析並避免使用14個關鍵字參數的函數。
變化offline_optimize'的'函數簽名,以便它接受可變數量的關鍵字參數。 –
@JoelCornett:你能舉一個簡單的例子嗎? –