gpt4 book ai didi

python - 这个 python 列表删除循环有什么问题?

转载 作者:太空狗 更新时间:2023-10-30 01:45:09 25 4
gpt4 key购买 nike

今晚我在做一个长程序时起得太久了。但我遇到了一个简单的障碍。任何人都可以告诉我为什么这段代码是这样工作的吗?

我有两个列表。我希望 list2 只包含不在 list1 中的数字。从逻辑上讲,这似乎应该可行。但它根本没有。为什么?

list1 = [1,2,3,4,5,6,7,8]
list2 = [12,15,16,7,34,23,5,23,76,89,9,45,4]


for ch in list2:
if ch in list1:
list2.remove(ch)

return list2

不知何故,这返回: [15, 7, 5, 23, 76, 9, 4]

为什么?

我怎样才能完成我需要的?

最佳答案

当您修改正在迭代的序列时,它会产生意想不到的结果。我会这样做,它利用了快速 set 操作。

list2 = list(set(list2) - set(list1))

这是否比使用列表理解更快或更慢取决于 list1list2 的大小,以及您是否可以将它们组成一个 set 作为初始化的一部分,而不是在循环中多次。

关于python - 这个 python 列表删除循环有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8306606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com