首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在一定长度的索引和固定和之间创建组合数组

如何在一定长度的索引和固定和之间创建组合数组
EN

Stack Overflow用户
提问于 2022-05-14 09:35:47
回答 1查看 24关注 0票数 0

例如:

代码语言:javascript
复制
array = [4,3,2,0,0,0,0,0,0]

第0指数只能与第3指数和第6指数相结合。第一指数只能与第四指数和第七指数相结合。第二指数只能与第五指数和第八指数相结合。(和应在这些索引之间保持不变)。那么,产出应是:

代码语言:javascript
复制
[1,2,2,1,1,0,2,0,0]
[2,1,1,1,1,1,1,1,0]...

在这两个组合中,各个索引之间的和(上面列出)保持不变。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-14 10:17:34

使用由findPairs生成的answer to your previous question函数

代码语言:javascript
复制
from itertools import product
  
def findPairs(sum_value, len_value):
    lst = range(sum_value + 1)

    return [
        pair 
        for pair in product(lst, repeat=len_value) 
        if sum(pair) == sum_value
    ]
代码语言:javascript
复制
import itertools

combinations = itertools.product(findPairs(array[0], 3), findPairs(array[1], 3), findPairs(array[2], 3))
result = [list(itertools.chain(*zip(p1, p2, p3))) for p1, p2, p3 in combinations]
print(result[0:10])
代码语言:javascript
复制
[[0, 0, 0, 0, 0, 0, 4, 3, 2], [0, 0, 0, 0, 0, 1, 4, 3, 1], 
[0, 0, 0, 0, 0, 2, 4, 3, 0], [0, 0, 1, 0, 0, 0, 4, 3, 1], 
[0, 0, 1, 0, 0, 1, 4, 3, 0], [0, 0, 2, 0, 0, 0, 4, 3, 0], 
[0, 0, 0, 0, 1, 0, 4, 2, 2], [0, 0, 0, 0, 1, 1, 4, 2, 1], 
[0, 0, 0, 0, 1, 2, 4, 2, 0], [0, 0, 1, 0, 1, 0, 4, 2, 1]]

...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72238965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档