Skip to main content
 首页 » 编程设计

python之两个列表值的组合

2025年05月04日12jyk

我正在寻找一种惯用的方法来将 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))]