2016-05-31 7 views

答えて

11

あなたはリストを入れ子にしている、とxは一つだけのリストのを表しています。ことを処理するには、この

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

のように、実際にxの個々の要素に上の乗算機能をマップする必要があります。しかし、私はこれ以上のリスト内包を好むだろう、

>>> [[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] 
関連する問題