>>> L = [1,2,3,4,5,6,7,8,9]>>> A = [3]>>> L[0],L[L.index(A[0])] = L[L.index(A[0])],L[0] #want to swap 3 with 1 >>> L [1,9,] #List L was not mutated
该清单没有像我预期的那样发生变异.但是,当我修改如下所示的实现时,它工作:
>>> L = [1,9]>>> A = [3]>>> i = L.index(A[0])>>> L[0],L[i] = L[i],L[0]>>> L[3,1,] #Now List mutated as desired even though L[i] and L[L.index(A[0])] evaluate to same value.
我的问题是,为什么第一个作业不能改变名单?我想到了,但我的大脑很好地解释了它.
解决方法 问题是这两者并不相同.第一个例子类似于:>>> L = [1,9]>>> A = [3]>>> i = L.index(A[0])>>> L[0] = L[i]>>> i = L.index(A[0])>>> L[i] = L[0]
这意味着您最终交换,然后找到您刚刚交换的元素并交换回来.
您感到困惑的原因是您正在考虑将元组赋值为Python同时执行这两项 *** 作 – 这不是执行执行的方式,而是按顺序执行,这会更改结果.
值得注意的是,即使它确实有效,它也是一种次优的方式. List.index()不是一个特别快的 *** 作,所以无缘无故地做两次并不是一个好主意.
总结以上是内存溢出为你收集整理的在Python上列出变异全部内容,希望文章能够帮你解决在Python上列出变异所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)