m = n
Не создает новый список. Он просто отображает имя m
в тот же список, на который указывает n
. Поэтому, когда вы делаете m[c] = n[a]
, первоначальный список также изменяется - отсюда и неожиданное поведение.
Попробуйте:
def order(n):
a = 0
m = n[:] # create copy
print(n)
print(m)
while a < len(n):
b = 0
c = 0
while b < len(n):
if n[b] < n[a]:
c += 1
print(c)
b += 1
m[c] = n[a] # assign in output
a += 1
print(n)
print(m)
Это создает копию и, похоже, решает проблему:
...
[9, 7, 8, 5, 6, 3, 4, 1, 2, -1]
[-1, 1, 2, 3, 4, 5, 6, 7, 8, 9]
PS: для сортировки не требуется копия списка в быть сделано. Есть лучшие алгоритмы, которые могут изменить список на месте.