Python 在具有多个重复值的已排序列表中,围绕某个值选择项目

Python 在具有多个重复值的已排序列表中,围绕某个值选择项目,python,list,sortedlist,multiplicity,Python,List,Sortedlist,Multiplicity,我试图在python列表中选择一些元素。该列表表示一些其他元素的大小分布,因此它包含多个重复值 在我找到这个列表上的平均值之后,我想挑选那些值位于该平均值的上限和下限之间的元素。我可以很容易地做到这一点,但它选择了太多的元素(主要是因为我必须处理的分布非常均匀)。因此,我希望能够选择选择值的边界,但也将搜索范围限制为低于平均值的5个元素和高于平均值的5个元素 我将添加我的代码(非常简单) avg_lists=sum_lists/len(lists) num_list=len(列表) 如果(int

我试图在python列表中选择一些元素。该列表表示一些其他元素的大小分布,因此它包含多个重复值

在我找到这个列表上的平均值之后,我想挑选那些值位于该平均值的上限和下限之间的元素。我可以很容易地做到这一点,但它选择了太多的元素(主要是因为我必须处理的分布非常均匀)。因此,我希望能够选择选择值的边界,但也将搜索范围限制为低于平均值的5个元素和高于平均值的5个元素

我将添加我的代码(非常简单)

avg_lists=sum_lists/len(lists)
num_list=len(列表)
如果(int(num_comm/10)%2==0):
窗口大小=整数(数值列表/10)
其他:
窗口大小=整数(数值列表/10)-1
out_file=open('chosenLists','w+'))
选择的_列表=[]
对于列表中的列表:
如果((len(list)>=(avg_lists-window_size))&(len(list)如果允许使用而不是,则可以使用此简单解决方案:

def select(l, n):
    assert n <= len(l)
    s = sorted(l)           # sort the list
    i = (len(s) - n) // 2
    return s[i:i+n]         # return sublist of n elements from the middle

print select([1,2,3,4,5,1,2,3,4,5], 5)   # shows [2, 2, 3, 3, 4]
def选择(左、右):

assert n为什么不使用?您在“均质”中遗漏了“h”,您需要的元素最多分别是高于平均值和低于平均值的5个?窗口中高于平均值的5个元素和低于平均值的5个元素,或者最接近平均值的5个元素和低于平均值的5个元素?您是否打算无条件写入(仅限)
中的最后一个列表列出了文件
chosenLists
?此外,以任何方式写入文件是否与您的问题相关?如果不相关,请将其从示例中删除。(相反,您可能希望告诉我们
num_comm
的来源。请参阅。)这是另一种分类包的好方法(设置允许多重性)。适用于中位数(如dlask)或平均值。
def select(l, n):
    assert n <= len(l)
    s = sorted(l)           # sort the list
    i = (len(s) - n) // 2
    return s[i:i+n]         # return sublist of n elements from the middle

print select([1,2,3,4,5,1,2,3,4,5], 5)   # shows [2, 2, 3, 3, 4]