Python 尝试创建一个快速排序函数来更改原始列表,但它不会';我不能对它做任何改变

Python 尝试创建一个快速排序函数来更改原始列表,但它不会';我不能对它做任何改变,python,recursion,quicksort,Python,Recursion,Quicksort,这是代码。我不知道为什么它不起作用,顺便说一下,我还是个初学者: 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_sor

这是代码。我不知道为什么它不起作用,顺便说一下,我还是个初学者:

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快速排序(L):
如果len(L)>1:
L1=[]
L2=[]
对于范围(1,len(L))中的i:
如果L[i]=L[0]:
L2.追加(L[i])
快速排序(L1)
快速排序(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
def快速排序(L):
如果len(L)>1:
L1=[]
L2=[]
对于范围(1,len(L))中的i:
如果L[i]=L[0]:
L2.追加(L[i])
L=L1+[L[0]]+L2

您必须将
L=L1+[L[0]]+L2
更改为
L[:]=L1+[L[0]]+L2


当您为
L
赋值时,它只会重新绑定名称,但使用
L[:]
将替换列表中以前的内容。

将最后一行更改为
L[:]=L1+[L[0]]+L2
,它应该可以工作。当答案回答您的问题时,不要忘记接受(并追加投票)。您解决了问题吗