从列表的副本中删除时删除的列表元素
我创建了一个代码,用于在音乐列表 ( 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