list1 = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 500000.0, 500000.0, 500000.0], [0, 0, 1000000.0, 0], [0, 1000000.0, 500000.0, 2500000.0]] list2 = [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 1, 1, 1], [0, 0, 2, 0], [0, 2, 1, 4]]
我们能把list1和list2中的每个元素分开吗?
输出应该再次出现在列表中。
最佳答案
这通常被称为zipwith。Python没有一个内置函数来实现这一点,但是使用列表理解来构建自己很容易。
[f(a, b) for a, b in zip(list1, list2)] # where f is the function to zip with!
不过,这实际上是一个zipwith的zipwiths,所以让我们嵌套:
[[aa/bb for (aa, bb) in zip(a, b)] for (a, b) in zip(list1, list2)]
编辑:正如Aran Fey指出的那样,在Python中确实存在为zipwith,这使得:
import functools import operator zipwithdiv = functools.partial(map, functools.partial(map, operator.truediv)) zipwithdiv(list1, list2) # magic!
诚然,这比罪更丑陋。但它使我的小功能心脏跳动得很厉害。