如何从具有均匀分布的列表中提取指定数量的元素?

时间:2015-09-02 17:06:52

标签: python list slice

解决方案here显示了如何从具有均匀分布的列表中提取特定百分比的元素。如何从具有均匀分布的列表中提取指定数量的元素?

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是使用递归函数。这让我写得更快,但我觉得不是非常pythonic。无论如何,它完成了工作:

>>> def select_elements(myList,num):
    if len(myList)<=num: return myList #Might not be enough elements
    if num==0: return []
    if num==1: return [myList[int(round((len(myList)-1)/2))]]
    return [myList[int(round((len(myList)-1)/(2*num)))]]+select_elements(myList[int(round((len(myList)-1)/(num))):],num-1)

>>> i = range(10)
>>> for j in range(11):
    print(j,select_elements(i,j))


0 []
1 [4]
2 [2, 6]
3 [2, 5, 8]
4 [1, 3, 5, 8]
5 [1, 3, 5, 7, 8]
6 [1, 3, 4, 6, 7, 8]
7 [1, 2, 3, 4, 6, 7, 8]
8 [1, 2, 3, 4, 5, 6, 7, 8]
9 [0, 1, 2, 3, 4, 5, 6, 7, 8]
10 range(0, 10)

我们可以花一整天的时间来讨论在某些情况下正确分配的内容。这真的取决于你想要什么。上面的内容可能会有所改善,但我认为我会把事情搞定......