[英]Map list item to function with arguments
有沒有辦法將列表項與參數一起映射到函數?
我有一個清單:
pages = [p1, p2, p3, p4, p5...]
我必須調用對應於每個列表元素的函數myFunc
以及附加參數,以便可以計算以下內容
myFunc(p1, additionalArgument)
myFunc(p2, additionalArgument)
等等...
有沒有什么優雅的方法可以做到這一點?
您還可以使用 lambda 函數:
map(lambda p: myFunc(p, additionalArgument), pages)
使用列表理解:
result = [myFunc(p, additionalArgument) for p in pages]
你可以使用列表理解
[myFunc(p, additionalArgument) for p in pages]
或functools.partial()
map(functools.partial(myFunc, some_arg=additionalArgument), pages)
請注意,如果您計划使用map
進行分布式計算(即使用multiprocessing ),它不會像人們預期的那樣解壓參數。 假設您想通過以下方式將調用分發到myFunc
(它接受兩個參數: page
和additionalArgument
):
pages = [p1, p2, p3, p4, p5...]
如果您指定一個args
列表(元組),即
args = [(page, additionalArgument) for page in pages]
map
不會解壓args
元組,只會將一個參數(元組)傳遞給myFunc
:
pool.map(myFunc, args) # map does not unpack the tuple
您將需要改用multiprocessing.starmap
starmap
與map()
類似,只是 iterable 的元素應該是作為參數解包的 iterable。
IE
pool.starmap(myFunc, args) # tuples are unpacked and two arguments are passed to myFunc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.