簡體   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