[英]How can i divide list according to a threshold?
我有这样一个列表,我可以在不指定任何数字的情况下将这个列表分开。 但在那些列表中,最小和最大数字之间的差异必须是 9。 例如,第一个列表应该从 66 开始,当涉及到 78 时,另一个列表应该自动形成。
[66.8344897031784,
68.30329954624176,
78.08724462985992,
107.26053655147552,
107.44138896465302,
109.66499030590057,
171.51213765144348,
172.01367378234863,
173.17001342773438,
343.152220249176,
343.6864709854126,
346.3593053817749,
366.87140941619873,
372.18000888824463,
376.73717975616455,
431.0921788215637,
431.4517140388489,
431.8779182434082,
500.0079822540283,
500.45250415802,
503.12490463256836]
既然这明明是个微不足道的功课,我要小心不要说太多。 我将尝试纠正您当前的问题,但不会发布完整的解决方案。
现在,您正在浏览列表,检查小于 9 的增量,但您从未开始创建新列表。 如果您检查间隙的大小,要么它小到足以添加到列表中,要么您需要开始一个新列表。
将“else”与“if”一起使用可让您确定何时开始新列表。
first_list=[]
first_list.append(ymid[0])
for i in range(len(ymid)-1):
if ymid[i+1]<(ymid[i]+9):
first_list.append(ymid[i+1])
else:
# done with this list
print (first_list)
# start the new list
first_list = [ymid[i]]
你会注意到输出不正确,因为你的循环是错误的,但这是你可以在调试中修复的东西。 欢迎编程:)
既然您已经处理了第一项,那么您的循环是否应该从 0 开始? 您应该与下一个项目还是上一个项目进行比较? 一旦你开始工作,检查以确保你处理了最后一个项目。
当然,您可以有一个列表列表。 您不仅可以打印每个结果,还可以附加到结果列表中。 只要确保为下一个分组开始一个新列表。
results = []
current_list=[]
current_list.append(ymid[0])
for i in range(len(ymid)-1):
if ymid[i+1]<(ymid[i]+9):
current_list.append(ymid[i+1])
else:
# add current_list to results
results = current_list
# start the new list
current_list = [ymid[i]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.