[英]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.