迭代地交换Python中的元素
发布时间:2020-12-16 22:30:48 所属栏目:Python 来源:网络整理
导读:我无法理解这个简单的代码片段幕后发生的事情: def changeArray(arr): for i in range(len(arr)): arr[i],arr[arr[i] - 1] = arr[arr[i] - 1],arr[i] print(arr) return(arr) 该代码假定数组的元素为1到n的整数. 输入为[1,3,4,2]时给定代码的输出为: [1,2]
我无法理解这个简单的代码片段幕后发生的事情:
该代码假定数组的元素为1到n的整数.
虽然我期待它打印并返回:
当代码只交换元素时,为什么值会发生变化? 编辑: 事实证明,更改交换顺序可以解决问题:
这给出了以下输出:
改变订单是如何按预期进行交换的,反过来又完成了其他事情? 最佳答案
通常,您不应该使用正在变异的对象来指定要替换的目标位置,否则会非常混乱.
当你写这个:
它大致相当于:
(关于如何翻译这个的全部细节是in the reference docs,但希望这个更直观的想法更简单.) 哪个应该明确为什么你得到你的结果.以及为什么以下所有做你想做的事情:
我认为第一个是最简单的(第二个看起来很简单,但只是误导性的). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容