2017-04-12 113 views
1

在Python 3(.6)中,是否有一種簡單的方法將可變長度列表縮小爲4,同時保持順序並返回第一個項目, 33%的位置,該項目在66%的位置和最後一個項目?使用固定間隔抽樣將列表縮小爲固定大小

因此,舉例來說,如果我有:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

我希望它簡化爲:

[1, 3, 7, 10]

+0

您的輸入列表長度將始終大於4?如果不是預期輸出的元素數量較少的列表 – kuro

+1

'l [:: int(len(a_list)/ 3)]',將返回'[1,4,7,10]'。我不確定你是否正在尋找一種像這樣削減切片的方法。 – nick

+0

@kuro如果長度超過4,我只會使用這個功能。 –

回答

1

這是你所需要的:

_= [ n for k,n in enumerate(l) if k+1 in 
     [1,round(len(l)*0.33),round(len(l)*.66),len(l)] 
    ] 

l是原來的李ST。

+0

很好,謝謝!這是我自己想到的。我想知道是否可能有一個我不知道的更容易使用的內置函數,但我猜不是。 –