从列表的副本中删除时删除的列表元素

我创建了一个代码,用于在音乐列表 ( music_list) 中挑选随机音乐并将它们添加到music_queue. 当我执行这段代码时,所有的元素music_list都被删除了,我不明白为什么。

print("Music list lenght : " + str(len(music_list)))
if len(music_queue) == 0:
    tmp = music_list
    while len(tmp) > 0:
        music_queue.append(tmp.pop(randint(0,len(tmp) - 1)))
print("Music list lenght : " + str(len(music_list)))

回答

你需要改变

tmp = music_list
t
tmp = music_list[:]
tmp = music_list[:]

mp = music_list

将 tmp 设置为音乐列表而不复制,更改一个将编辑两个列表。

这是假设您不想编辑 music_list

这样做的原因是因为没有复制您正在引用内存中的相同项目:

无需复制:

内存位置:

>>> id(music_list)   
2614314102592
>>> id(tmp)          
2614314102592

与复制:

内存位置:

>>> id(music_list)
1782888775808
>>> id(tmp)
1782888775744

    以上是从列表的副本中删除时删除的列表元素的全部内容。
    THE END
    分享
    二维码
    < <上一篇
    下一篇>>