2016-05-31 63 views

回答

11

您有嵌套列表,x只是其中一個列表。爲了處理這一點,你需要真正的上的x個別元素映射乘法功能,這樣

>>> map(lambda x: map(lambda y: y * 2, x), [[1, 2, 3], [4, 5, 6]]) 
[[2, 4, 6], [8, 10, 12]] 

但我寧願在這個列表理解,

>>> [[y * 2 for y in x] for x in [[1, 2, 3], [4, 5, 6]]] 
[[2, 4, 6], [8, 10, 12]] 
3

替代的解決方案是去塊狀矢量化操作:

import numpy as np 

ll = [[1,2,3],[4,5,6]] 

(2*np.array(ll)).tolist() 
#Out[6]: [[2, 4, 6], [8, 10, 12]] 
0

這是有點矯枉過正,不太實際這個特殊的例子,但另一種風格選項可以使用functools.partial來說明發生了什麼以及map和列表理解的組合。

from functools import partial 
from operator import mul 

l = [[1, 2, 3], [4, 5, 6]] 

double = partial(mul, 2) 
dub_l = [map(double, sub) for sub in l] 
相關問題