Используя Python 3.6 с PyCharm, я начинаю с инициализированного списка из 12 целых чисел.Это позволяет мне применять случайное число к каждому значению в списке.Затем я хочу выбрать самую высокую шестерку из списка 12 вариантов.Вот код, который я использовал для достижения этой цели:
import random as rnd
# Initialize with a list of 12 zeros
options = [0, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0]
# Loop through the list, replacing zeros with random numbers
for i in range(len(options)):
options[i] = rnd.randint(3, 18)
# Next, find the six max
options_copy = options[:]
largest_1 = max(options_copy) # This seems very inefficient.
options_copy.remove(largest_1) #
largest_2 = max(options_copy) # What if I need the top 7,000 from
options_copy.remove(largest_2) # a list of 1 million?
largest_3 = max(options_copy) #
options_copy.remove(largest_3) #
largest_4 = max(options_copy) #
options_copy.remove(largest_4) #
largest_5 = max(options_copy) #
options_copy.remove(largest_5) #
largest_6 = max(options_copy) #
options_copy.remove(largest_6) #
# Collect the best into it's own list.
best = [largest_1, largest_2, largest_3,
largest_4, largest_5, largest_6]
Как сказано в разделе комментариев в приведенном выше коде, это кажется очень неэффективным.Например, предположим, мне нужно было найти первые 7000 из списка 1 миллион целых чисел.Существует ли эффективный петлевой механизм, который достигает того же результата?