【发布时间】:2022-08-22 20:37:29
【问题描述】:
我需要一些逻辑或想法来实现以下用例:
基本输入列表:
data=[
[\"10000025\",710],
[\"1000138833\",1065],
[\"100274005\",820],
[\"1353180\",3160],
[\"481584\",3670],
[\"4851845845\",1690],
[\"485584\",1310],
[\"48848448\",1000],
[\"49849948\",1050],
[\"585598\",4620],
[\"84154858584\",620],
[\"841584584\",2050],
[\"8451184584\",2860],
[\"845188956\",1800],
[\"845845184\",1300],
[\"8458484\",2300],
[\"8954884\",1780],
[\"9416481584\",2720],
[\"9448155584\",1000],
[\"94949494\",1000],
[\"959494158\",1590],
[\"98558858\",1550]
]
预期输出: 总和为 10000 的列表中的组合列表,如果没有特定值的总和,则每个组合最多包含 6 个元素的剩余元素列表。
我尝试关注一些线程:
Find all combinations of a list of numbers with a given sum
How to get all combination for a given sum with a given number of elements
我的代码:
data = [
[\"10000025\", 710], [\"1000138833\", 1065], [\"100274005\", 820], [\"1353180\", 3160], [\"481584\", 3670],
[\"4851845845\", 1690], [\"485584\", 1310], [\"48848448\", 1000],
[\"49849948\", 1050], [\"585598\", 4620], [\"84154858584\", 620], [\"841584584\", 2050], [\"8451184584\", 2860],
[\"845188956\", 1800], [\"845845184\", 1300], [\"8458484\", 2300], [\"8954884\", 1780], [\"9416481584\", 2720],
[\"9448155584\", 1000],
[\"94949494\", 1000],
[\"959494158\", 1590], [\"98558858\", 1550]
]
valueList = [x[1] for x in data]
def GetNumbers(number):
result = []
for i in sorted(valueList, reverse=True):
sum_list = sum(result)
if sum_list + i == number:
result.append(i)
return result
elif sum_list + i < number:
result.append(i)
return result
for i in range(0, len(data)):
print(GetNumbers(10000))
代码中的输出可以在列表或字典的列表中,以可实现的为准。
标签: python