python中for循环和while循环,python while和for的区别
最近刷题遇到一个问题。添加数组num和添加num[:]会得到不同的输出结果。
写一个例子:
Nums=[1,2,3,4,5] #创建数组res=[] res.append (Nums) nums [0],nums [4]=nums [4],nums [0] #交换数组中的元素res.append(nums)print(res)然后交换数组nums的第1个元素和第5个元素,并将它们添加到数组res中,不出意外的话,结果应该是:
[[1, 2, 3, 4, 5], [5, 2, 3, 4, 1]]
然而,最终的结果是:
[[5, 2, 3, 4, 1], [5, 2, 3, 4, 1]]
但是,如果将res.append(nums)更改为res.append(nums[:]),如下所示:
Nums=[1,2,3,4,5] #创建一个数组RES=[]res.append (nums [:])nums[0],nums [4]=nums [4],nums [0] #交换元素RES . append(nums[:]
[[1, 2, 3, 4, 5], [5, 2, 3, 4, 1]]
想了很久,nums和nums[:]指向不同的对象。nums是数组的对象,而nums[:]是索引组nums的元素。res.append(nums)是把整个对象加到res上,所以res=[nums,nums]。当nums发生变化时,之前在res中添加的nums也会发生变化;
而res.append(nums[:])将nums中的所有元素添加到res,而不是nums对象本身。
为了防止以后再犯错误,写这篇博客来加深自己的影响力!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。