У меня проблема, когда мне пришлось сортировать список чисел, который я сделал хорошо. Но тогда я должен ввести в список 5 наивысших чисел в списке, и я должен отметить, что есть повторяющиеся числа. Однако, когда я пытаюсь это сделать, ничего не печатает. Если я попытаюсь напечатать «count», будет напечатано только бесконечное число увеличивающихся чисел. Что я делаю не так?Python 3 Бесконечная петля с пузырьком Сортировка
list = [8,3,7,4,2,1,6,5,10,9,3,9,6,7,5]
def sortList(list):
switch = 1
temp = int(0)
while (switch != 0):
switch = 0
for i in range(len(list)-1):
if list[i] > list[i+1]:
temp = list[i]
list[i] = list[i+1]
list[i+1] = temp
switch = 1
# Это где моя проблема
count = int(0)
expensive5 = []
while count != 5:
for i in range(len(list)-1, 0, -1):
if float(list[i]) > float(list[i-1]):
expensive5.append(list[i])
count += 1
#if i print count here, I get an infinite number of increasing numbers
print(expensive5)
sortList(list)
Я бы не рекомендовал это. Наборы не гарантируют никакого заказа на их содержимое, поэтому, в то время как CPython может в настоящее время сохранять отсортированный порядок, вы не должны полагаться на это поведение. Поэтому для этого вам нужно будет снова сортировать после создания набора. – amiller27
Начиная с python 3.6, набор сохраняет порядок. – TJain
Вижу, я не знал об этом. Я по-прежнему придерживаюсь своего заявления (или, по крайней мере, рекомендовал бы это разъяснить в ответе), потому что 1) не гарантируется работа над версиями раньше, чем python 3.6, и много людей, которые находятся на python 3.x не обязательно на python 3.6, и 2) преобразование в набор излишне дорого для того, что пытается сделать OP – amiller27