繁体   English   中英

如何根据阈值划分列表?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM