在Python上列出变异

在Python上列出变异,第1张

概述我尝试通过使用第一个元素交换列表和另一个引用列表之间的公共元素来改变列表.实现如下所示: >>> 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,2,3,4,5,6,7,8,9,] #List L wa 我尝试通过使用第一个元素交换列表和另一个引用列表之间的公共元素来改变列表.实现如下所示:

>>> 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上列出变异所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1195213.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存