变化无重复

时间:2018-08-19 20:40:35

标签: python mathematical-optimization combinatorics variations variation

Formula 我一直在寻找一种有效的方法来检查列表 n k 个元素的 sum 是否等于 x 强>值。我认为也许在numpy和intertools库中会有所帮助。

示例:

list = [1, 0, 1, 3, 4, 2, 2]
temp = list.copy()
x = 10
result = []
import random

while sum(result) != x:
    try:
        a = random.choice(temp)
        result.append(a)
        temp.remove(a)
    except IndexError:
        temp = list.copy()
        result = []
        if sum(result) > 10:
            result = []

对于大列表的随机选择这不是很有效。

1 个答案:

答案 0 :(得分:0)

我认为itertools.combinations是您所需要的

from itertools import combinations

l = [1, 0, 1, 3, 4, 2, 2]
x = 10

for i in range(len(l)):
    for c in combinations(l, i):
        if sum(c) == x:
            print(c)