gpt4 book ai didi

python从2个列表中删除重复项

转载 作者:太空狗 更新时间:2023-10-29 19:30:14 27 4
gpt4 key购买 nike

我正在尝试从 2 个列表中删除重复项。所以我写了这个函数:

a = ["abc", "def", "ijk", "lmn", "opq", "rst", "xyz"]

b = ["ijk", "lmn", "opq", "rst", "123", "456", ]

for i in b:
if i in a:
print "found " + i
b.remove(i)

print b

但我发现匹配项后面的匹配项不会被删除。

我得到这样的结果:

found ijk
found opq
['lmn', 'rst', '123', '456']

但我希望这样的结果:

['123', '456']

我怎样才能修复我的函数来做我想做的事?

谢谢。

最佳答案

这是正在发生的事情。假设你有这个列表:

['a', 'b', 'c', 'd']

并且您正在遍历列表中的每个元素。假设你当前在索引位置 1:

['a', 'b', 'c', 'd']
^
|
index = 1

...然后删除索引位置 1 处的元素,得到:

['a',      'c', 'd']
^
|
index 1

删除项目后,其他项目向左滑动,给你这个:

['a', 'c', 'd']
^
|
index 1

然后当循环再次运行时,循环将索引递增到 2,得到:

['a', 'c', 'd']
^
|
index = 2

看看你是如何跳过“c”的?教训是:永远不要从循环列表中删除元素。

关于python从2个列表中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18194968/

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