我正在寻找一种惯用的方法来将 n 维向量(以列表形式给出)与偏移量列表相结合,这将应用于每个维度。 即:鉴于我有以下值和偏移量:
v = [5, 6]
o = [-1, 2, 3]
我想获取以下列表:
n = [[4, 5], [7, 5], [8, 5], [4, 8], [7, 8], [8, 8], [4, 9], [7, 9], [8, 9]]
源自:
n = [[5-1, 6-1], [5+2, 6-1], [5+3, 6-1], [5-1, 6+2], [5+2, 6+2], [5+3, 6+2], [5-1, 6+3], [5+2, 6+3], [5+3, 6+3]]
性能在这里不是问题,结果列表的顺序也无关紧要。关于如何在没有丑陋的嵌套 for 循环的情况下生成它的任何建议?我想 itertools 提供了解决方案的工具,但我还没有弄明白。
请您参考如下方法:
from itertools import product
[map(sum, zip(*[v, y])) for y in product(o, repeat=2)]
或者,正如 faltru 和 Dobi 在评论中所建议的那样:
[map(sum, zip(v, y)) for y in product(o, repeat=len(v))]
