繁体   English   中英

遍历清单几次

[英]Going through list a couple of times

def summify(array, number):
    returnList = []
    if type(array).__name__ == 'list':
        for k in range(0, len(array)):
            for kk in range(k, len(array)):
                if array[k] + array[kk] == number:
                    returnList.append([array[k],array[kk]])
    else:
        return []

我真的不知道什么是解决这个问题的最好方法。 我想做的是给一个数组(python列表),然后在参数中给定一个特定的数字,我希望函数从列表中返回一组项目,这些项目的总和将达到该数字。

例如,

>>> summify([1,2,3,4,5,6,7,8,9,10], 10)
[[1,2,3,4]
 [1,5,4]
 [2,3,5]]
 ...

以及所有其他组的总数为10。

您没有指定所需的数组长度,但这是一种方法:

import itertools

def summify(num_list, target):
    for v in range(len(num_list)):
        for combo in itertools.combinations(num_list, v):
            if sum(combo) == target:
                print combo


t = range(1,11)

summify(t, 10)

(10,)
(1, 9)
(2, 8)
(3, 7)
(4, 6)
(1, 2, 7)
(1, 3, 6)
(1, 4, 5)
(2, 3, 5)
(1, 2, 3, 4)

这是另一种方式:

def summify(num_list, num):
    for v in range(len(num_list)):
        combos = filter(lambda x: sum(x) == num, itertools.combinations(num_list, v))
        if combos:
            print combos

summify(t, 10)

[(10,)]
[(1, 9), (2, 8), (3, 7), (4, 6)]
[(1, 2, 7), (1, 3, 6), (1, 4, 5), (2, 3, 5)]
[(1, 2, 3, 4)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM