2015-06-09 2 views
3

Я хотел бы разделить элементы списка внутри двух списков.Как разделить элемент списка по элементу списка из другого списка с помощью Python?

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

Как я могу разделить а на Ь, чтобы получить этот результат:

c = [[0.2, 0, 0.5], [0, 0, 0], [0.333], [0.333]] 

Может кто-нибудь мне помочь?

ответ

5

Использование itertools.izip (python2.7):

import itertools 

[[float(aaa)/bbb for (aaa, bbb) in itertools.izip(aa, bb)] \ 
    for (aa, bb) in itertools.izip(a, b)] 
8

Zip два списка и использовать список понимание:

from __future__ import division # in python2 only 
result = [[x/y for x,y in zip(xs, ys)] for xs, ys in zip(a, b)] 

Sample пробег:

In [1]: a = [[1, 0, 2], [0, 0, 0], [1], [1]] 
    ...: b = [[5, 6, 4], [6, 6, 6], [3], [3]] 
    ...: 

In [2]: result = [[x/y for x,y in zip(xs, ys)] for xs, ys in zip(a, b)] 

In [3]: result 
Out[3]: [[0.2, 0.0, 0.5], [0.0, 0.0, 0.0], [0.3333333333333333], [0.3333333333333333]] 
+0

Почему я получаю '[[0, 0, 0], [0, 0, 0], [0], [0]]' как вывод, если я запустил это? (Я использую Python 2.7) –

+2

@Borja Когда вы используете python2.7, вы должны положить 'из __future__ import division' в самый верх ваших файлов. По умолчанию в python2 оператор '/' представляет собой целочисленное деление, когда вы действительно хотите float-деление. – Bakuriu

2
from __future__ import division # for Python2 

[[x/y for x, y in zip(*item)] for item in zip(a, b)] 
Смежные вопросы