2016-05-31 61 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] 
相关问题