如何使用Python将一个列表中的每个项与另一个列表中的每个项逐一相除?

3

我想把两个列表中的列表项分开。

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

我该如何将 a 除以 b 并得到以下输出结果:
c = [[0.2, 0, 0.5], [0, 0, 0], [0.333], [0.333]]

有人能帮我吗?

3个回答

8

将两个列表压缩,使用列表推导式:

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

示例运行:

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]]作为输出?(我使用的是Python 2.7) - Avión
2
@Borja 当你使用Python2.7时,你应该在文件的顶部加上from __future__ import division。在Python2中,默认情况下/运算符是整数除法,而实际上你需要浮点除法。 - Bakuriu

5

使用 itertools.izip (Python 2.7):

import itertools

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

2
from __future__ import division # for Python2

[[x / y for x, y  in zip(*item)] for item in zip(a, b)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接