Попытка сделать функцию быстрой сортировки, которая изменяет исходный список, но не вносит в него никаких изменений - PullRequest
0 голосов
/ 10 июля 2020

Вот код. Я не уверен, почему это не работает, кстати, я все еще новичок:

def quick_sort(L):
  if len(L)>1:
    L1=[]
    L2=[]
    for i in range(1,len(L)):
      if L[i]<=L[0]:
        L1.append(L[i])
      elif L[i]>=L[0]:
        L2.append(L[i])
    quick_sort(L1)
    quick_sort(L2)
    L=L1+[L[0]]+L2

Я даже пытался сделать только первый шаг, используя приведенный ниже код, но список не изменился:

def quick_sort(L):
  if len(L)>1:
    L1=[]
    L2=[]
    for i in range(1,len(L)):
      if L[i]<=L[0]:
        L1.append(L[i])
      elif L[i]>=L[0]:
        L2.append(L[i])
    L=L1+[L[0]]+L2

1 Ответ

1 голос
/ 10 июля 2020

Вы должны изменить L=L1+[L[0]]+L2 на L[:]=L1+[L[0]]+L2

Когда вы присваиваете значение L, оно только повторно связывает имя, но использование L[:] заменяет то, что было ранее в списке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...