Я пытаюсь быстро сортировать список и хочу сделать это на месте.Список slice python
У меня есть следующий код и вы хотите знать в целом (эта проблема часто возникает для меня, поскольку я пытаюсь решить проблемы с списком в фактическом списке, а не сложную последовательность возвратов или используя странные индексы), может list slice позволяет мне влиять на список, из которого он получен? Существуют ли более серьезные последствия для того, чтобы делать что-то подобное?
def partition(A,l,r):
p=A[l]
i=l+1
print(A)
for j in range(l+1,r):
if A[j]<p:
save=A[i]
A[i]=A[j]
A[j]=save
i+=1
save=A[i-1]
A[i-1]=A[l]
A[l]=save
return i-1
def quickSort(A,n):
if n>1:
split=partition(A,0,n)
quickSort(A[:split],len(A[:split]))
quickSort(A[split+1:],len(A[split+1:]))
print(A)
return A
A=[3,4,5,2,10,7,6,9,1]
print(quickSort(A,len(A)))
Слайд списка всегда является копией. Вот почему 'l [:]' является идиомой для создания копии целого списка. – Barmar
Так есть ли способ заставить код работать так? Могу ли я на самом деле указать на элементы в моем списке A, используя как-нибудь часть списка? –
есть некорректность в количестве аргументов вашей функции 'quickSort' –