我有一大串的数字,比如:
a = [133000, 126000, 123000, 108000, 96700, 96500, 93800,
93200, 92100, 90000, 88600, 87000, 84300, 82400, 80700,
79900, 79000, 78800, 76100, 75000, 15300, 15200, 15100,
8660, 8640, 8620, 8530, 2590, 2590, 2580, 2550, 2540, 2540,
2510, 2510, 1290, 1280, 1280, 1280, 1280, 951, 948, 948,
947, 946, 945, 609, 602, 600, 599, 592, 592, 592, 591, 583]
我想做的是在这个列表中逐个循环检查一个值是否高于某个阈值(例如40000)。如果它高于这个阈值,我们就把这个值放到一个新的列表中,然后忘掉它。否则,我们会等到值的总和超过阈值,然后将值放入列表中,然后继续循环。最后,如果最终值的和不到阈值,我们就把它们添加到最后一个列表中。你知道吗
如果我不清楚,考虑一个简单的例子,阈值是15
[20, 10, 9, 8, 8, 7, 6, 2, 1]
最终列表应如下所示:
[[20], [10, 9], [8, 8], [7, 6, 2, 1]]
我的数学和python真的很差,我已经不知所措了。我想出了一些基本的代码,但实际上不起作用:
def sortthislist(list):
list = a
newlist = []
for i in range(len(list)):
while sum(list[i]) >= 40000:
newlist.append(list[i])
return newlist
任何帮助都将不胜感激。抱歉,邮件太长了。你知道吗
下面的函数将接受您的输入列表和一些要检查的限制,然后输出排序的列表:
使用Python,您可以迭代列表本身,而不是迭代它的索引,因此您可以看到我使用
for i in a
而不是for i in range(len(a))
。你知道吗在函数
out
中,是要在末尾返回的列表;temp
是一个临时列表,用数字填充,直到temp
的和超过lim
的值,此时这个temp
被附加到out
并替换为空列表。你知道吗希望这能有所帮助:)
结果是:
输出:
相关问题 更多 >
编程相关推荐