解决方案here显示了如何从具有均匀分布的列表中提取特定百分比的元素。如何从具有均匀分布的列表中提取指定数量的元素?
答案 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)
我们可以花一整天的时间来讨论在某些情况下正确分配的内容。这真的取决于你想要什么。上面的内容可能会有所改善,但我认为我会把事情搞定......