2016-05-31 9 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] 
Смежные вопросы