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
,它应该可以工作。当答案回答您的问题时,不要忘记接受(并追加投票)。您解决了问题吗