gpt4 book ai didi

Python:查找所有具有约束元素且加起来为常数的元组

转载 作者:行者123 更新时间:2023-12-01 05:49:05 25 4
gpt4 key购买 nike

假设给我一个长度为 4 的向量,其最小值 (0,0,0,0) 和最大值 (2,1,3,2)。我想找到这个范围内的所有整数向量,比如 5。

以下代码实现了这一点:

maxvalues = (2,1,3,2)
k = 5
t = []
for x1 in range(maxvalues[0]+1):
for x2 in range(maxvalues[1]+1):
for x3 in range(maxvalues[2]+1):
for x4 in range(maxvalues[3]+1):
if x1+x2+x3+x4 is k:
t.append((x1,x2,x3,x4))

但是,这段代码不能很好地推广到更大的向量,并且看起来效率有点低。有没有人有一个好方法来概括这一点?

编辑:轻微错误,忘记了 if 语句

最佳答案

使用itertools.product

from itertools import product

for x1, x2, x3, x4 in product(*(range(i+1) for i in maxvalues)):
t.append((x1, x2, x3, x4))

尽管直接将 product 对象转换为列表会更好(也更通用)。

t = list(product(*(range(i+1) for i in maxvalues)))

包含 if 语句后,它看起来像这样。

t = [i for i in product(*(range(i+1) for i in maxvalues)) if sum(i) == k]

关于Python:查找所有具有约束元素且加起来为常数的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15065278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com