#python-3.x #list #sorting
#python-3.x #Список #сортировка
Вопрос:
Я хочу напечатать количество чисел, которые изменили свою позицию. Мой код:
def mysort(arr):
count = 0
for i in range(len(arr)):
min_value = i
for j in range(i, len(arr)):
if arr[j] < arr[min_value]:
min_value = j
count = 1
temp = arr[i]
arr[i] = arr[min_value]
arr[min_value] = temp
return count
my_list = [4,2,3,1,6,5]
print(mysort(my_list))
Мой код возвращается 3
как результат, но он должен вернуться 4
. Как я могу это исправить?
Ответ №1:
Чтобы подсчитать количество элементов с измененными позициями, почему бы не попробовать:
def count_change(old, new):
# assume old and new have the same length
count = 0
for x,y in zip(old, new):
if x != y:
count = 1
return count
Ваш код фактически подсчитывает количество подкачки значений
Комментарии:
1. Или
sum(x != y for (x, y) in zip(old, new))
2. Или
sum(map(operator.ne, old, new))