Печать лучших n отдельных значений списка - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу напечатать 10 лучших элементов из списка:

top=10
test=[1,1,1,2,3,4,5,6,7,8,9,10,11,12,13]
for i in range(0,top):
    if test[i]==1:
        top=top+1
    else:
        print(test[i])

Это печать:

2,3,4,5,6,7,8

Я ожидаю:

2,3,4,5,6,7,8,9,10,11

Чего мне не хватает?

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Мое решение

test = [1,1,1,2,3,4,5,6,7,8,9,10,11,12,13]
uniqueList = [num for num in set(test)] #creates a list of unique characters [1,2,3,4,5,6,7,8,9,10,11,12,13]

for num in range(0,11):
    if uniqueList[num] != 1: #skips one, since you wanted to start with two
        print(uniqueList[num])
0 голосов
/ 11 декабря 2018

Используя numpy

import numpy as np
top=10
test=[1,1,1,2,3,4,5,6,7,8,9,10,11,12,13]
test=np.unique(np.array(test))
test[test!=1][:top]

Выход

array([ 2,  3,  4,  5,  6,  7,  8,  9, 10, 11])
0 голосов
/ 11 декабря 2018

Поскольку ваш код выполняет цикл только 10 раз, а первые 3 используются для игнорирования 1, поэтому печатаются только следующие 3, что в точности происходит здесь.

Если вы хотитечтобы вывести 10 лучших значений, я рекомендую вам сделать это:

# The code of unique is taken from [remove duplicates in list](/6734135/udalenie-dublikatov-v-spiskah)
def unique(l):
    return list(set(l))

def print_top_unique(List, top):
    ulist = unique(List)

    for i in range(0, top):
        print(ulist[i])

print_top_unique([1, 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], 10)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...