from pprint import pprint numbers = [9,8,15,10,14,17,11] result_sets = [] for i, num in enumerate(numbers): result_set = [num] pos = i + 1 print pos, result_set, sum(result_set) while pos < len(numbers): if sum(result_set) + numbers[pos] <= 30: result_set.append(numbers[pos]) print pos, numbers[pos], result_set, sum(result_set) pos += 1 if sum(result_set) == 30: print sum(result_set) result_sets.append(result_set) pprint(result_sets, indent=2)