本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:幽默盒子,一个专注于搞笑,分享快乐的公众号

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

将数字从一个列表移动到另一个列表(解释)[重复]

发布于2021-06-28 07:06     阅读(1100)     评论(0)     点赞(26)     收藏(4)



谁能解释这段代码背后的逻辑?

def move(list1,list2):
    for num in list1: 
        list2.append(num)
        list1.remove(num)
list1=[1,2,3,4,5]
list2=[10]
move(list1,list2)
print(list1,list2)

我一直在试图弄清楚为什么输出是

[2, 4] [10, 1, 3, 5]

但不是

[] [10,1,2,3,4,5]

不应该将 list1 中的所有 num 移动到 list2 吗?我仍然是python的初学者。


解决方案


当您的 for 循环继续时,->您的初始列表会缩小。

index of used element 1
-----------
initial list [1, 2, 3, 4, 5]
item added to list2 1
item removed from list1 1
----------------------------
index of used element 2
-----------
initial list [2, 3, 4, 5]
item added to list2 3
item removed from list1 3
----------------------------
index of used element 3
-----------
initial list [2, 4, 5]
item added to list2 5
item removed from list1 5
----------------------------
[2, 4] [10, 1, 3, 5]

正如您在第三次迭代中看到的,for 循环到达初始列表的最后一个元素,即 5。

2 和 4 被跳过,因为列表缩小了 例如,initial_list[2] 变为 3 而不是 2,因为初始列表在删除 1 后变为 [2,3..]。






所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/992231/a7b3ee7cce8aa7c135e9/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

26 0
收藏该文
已收藏

评论内容:(最多支持255个字符)