Bha*_*ttu 2 python list-comprehension list python-3.x
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]]
Run Code Online (Sandbox Code Playgroud)
我们可以从list1和list2中划分每个元素吗?
输出应该再次列在列表中.
IIUC
import numpy as np
>>> np.array(list1)/list2
array([[ nan, nan, nan, nan],
[ nan, nan, nan, nan],
[ nan, nan, nan, nan],
[ nan, nan, nan, nan],
[ nan, 500000., 500000., 500000.],
[ nan, nan, 500000., nan],
[ nan, 500000., 500000., 625000.]])
Run Code Online (Sandbox Code Playgroud)
这通常被称为zipwith.Python没有内置函数来执行此操作,但使用列表解析可以轻松构建自己.
[f(a, b) for a, b in zip(list1, list2)] # where f is the function to zip with!
Run Code Online (Sandbox Code Playgroud)
这实际上是一个zipwith的zipwithS,不过,让我们的窝:
[[aa/bb for (aa, bb) in zip(a, b)] for (a, b) in zip(list1, list2)]
Run Code Online (Sandbox Code Playgroud)
编辑:正如Aran-Fey指出的那样,zipwith 确实存在map于Python中,这使得:
import functools
import operator
zipwithdiv = functools.partial(map, functools.partial(map, operator.truediv))
zipwithdiv(list1, list2) # magic!
Run Code Online (Sandbox Code Playgroud)
诚然,这比罪恶更丑陋.但它让我的小功能心脏变得笨拙.
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |