2014-11-29 6 views
2

Я хочу, чтобы вычитать список списков из соответствующих элементов другого списка списков, такие как:Вычитания из одного списка списков из другого списка списков

a=[[1,2],[3,4]] 
b=[[1,2],[3,0]] 

с ожидаемым выходом быть:

c=[[0,0],[0,4]] 

Вычитание только один список из другого легко с:

c=[i-j for i,j in zip(a,b)] 

, но это не работает Ф.О. r список списков и возвратов TypeError: unsupported operand type(s) for -: 'list' and 'list'. Любые идеи о том, как это сделать?

+0

вы пробовали вложенные циклы для извлечения элементов и создания результата? – wwii

ответ

1

Это должно сделать работу:

c=[map(lambda x, y: x-y, ii, jj) for ii, jj in zip(a,b)] 
+0

Это сработало. Как гибкость в использовании списка. – Ibe

+0

Прохладный, рад, что это могло бы помочь. Несмотря на то, что решение, основанное на «numpy» ниже, прекрасно работает, он все равно должен импортировать внешний модуль и преобразовать его из 'numpy.array' в' list', даже если это неявно. –

1

использование Numpy массивы

>>> import numpy as np 
>>> a=np.array([[1,2],[3,4]]) 
>>> b=np.array([[1,2],[3,0]]) 
>>> a-b 
array([[0, 0], 
     [0, 4]]) 
+0

работал, спасибо. – Ibe

Смежные вопросы