Как взять некоторый процент значений из списка, который был отсортирован в порядке убывания в Python? - PullRequest
0 голосов
/ 07 марта 2019

У меня список ниже отсортирован в порядке убывания. Список:

[717.1573237876664, 182.7371943521783, 159.83445384690813, 51.76429530389303, 45.6779696561034, 30.617835033786744, 28.400451713817905, 25.784283394118074, 19.37917065]

И я должен взять некоторый процент значений из этого списка, скажем, 80%, и это должно быть в порядке. Например.

Length of the List: 9
then 80% of 9 = 7.2

Возьмите 7 значений из списка в отсортированном порядке, который считается

[717.1573237876664, 182.7371943521783, 159.83445384690813, 51.76429530389303, 45.6779696561034, 30.617835033786744, 28.400451713817905].

Я не понимаю, как написать код для него.

Ответы [ 3 ]

1 голос
/ 07 марта 2019

Вам нужно использовать нарезку списка:

mylist = [717.1573237876664, 182.7371943521783, 159.83445384690813, 51.76429530389303, 45.6779696561034, 30.617835033786744, 28.400451713817905, 25.784283394118074, 19.37917065]
percent = 80
print(mylist[:int(len(mylist) * percent / 100)])
# [717.1573237876664, 182.7371943521783, 159.83445384690813, 51.76429530389303, 45.6779696561034, 30.617835033786744, 28.400451713817905]
0 голосов
/ 07 марта 2019

Сначала вычислите количество нужных вам элементов -

elements = int(len(x) * (percent/100)) # x here is your list and len(x) is the length of your list

Затем склейте старый список -

new_list = x[:elements+1]

Поскольку ваш собственный список уже отсортирован, мы ненужно снова отсортировать.Если вам нужно отсортировать список, см. sorted

Также посмотрите, как работает slicing .

0 голосов
/ 07 марта 2019

Попробуйте это:

new_list = old_list[:int(len(old_list)*0.8)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...