python - 尝试创建一个快速排序功能来更改原始列表,但它不会对其进行任何更改
问题描述
这是代码。顺便说一句,我不确定为什么它仍然是初学者:
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
解决方案
您必须更改L=L1+[L[0]]+L2
为L[:]=L1+[L[0]]+L2
当您为 分配值时L
,它只会重新绑定名称,但 usingL[:]
将替换列表中先前的名称。
推荐阅读
- html - 如何逐页查看 MTurk 任务?
- java - 循环依赖阻止在 Tomcat 上进行战争部署
- java - 为什么我的 continue 语句不会重新启动我的 while 循环?
- react-native - 一些可触摸的不透明度有效,而另一些则在 React Native Animated View 中无效
- rest - 如果我们在 REST 中创建了多个更新请求资源,对服务器端有什么影响
- java - 无法使用 Java 将字符串转换为 JSON
- vue.js - 我如何将我的列表的值与 v-model 和 value 放在一起?
- java - 如何用数组绘制向上的金字塔?
- vuejs2 - Vue.js/Axios - 列表中的重复结果。在 v-for 中有唯一键
- go - 添加 []bytes 追加切片 []bytes