Python如何列表相减且不去重?

例如

result=["a","b","d","a"]
a=["a","d"]

输出["a","b"]
怎么实现


result = ["a", "b", "d", "a"]
a = ["a", "d"]

output = result[:]
for element in a:
    if element in output:
        output.remove(element)

print(output)

可以考虑使用remove 值得注意的是 output 的字母顺序 是 源列表 从前往后 删除的 如果需要还需要再调整代码

sum([[i for _ in range(res.count(i) - a.count(i))] for i in set(res)], [])
# 这个试过了,因该是你要的效果吧
from collections import Counter

result = ["a", "b", "d", "a"]
a = ["a", "d"]

a_count = Counter(a)
result_count = Counter(result)

diff_count = result_count - a_count
diff = [k for k, v in diff_count.items() for i in range(v)]

print(diff)

【以下回答由 GPT 生成】

问题解答: 这个问题可以通过遍历result列表,逐个比较每个元素是否在a列表中来实现。如果在a列表中,则将该元素从result列表中删除。最后返回result列表即可。

result = ["a", "b", "d", "a"]
a = ["a", "d"]

for element in a:
    if element in result:
        result.remove(element)

print(result)

输出结果为 ["a", "b"]。

这样做的原理是,在循环中使用remove方法删除result列表中的元素。由于remove方法只能删除列表中第一个匹配到的元素,因此可以确保不去重。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

result = ["a", "b", "d", "a"]
a = ["a", "d"]

output = [x for x in result if x not in a]
print(output)


from collections import Counter

##这个适合重复元素元素个数为2个的
result=["a","b","d","a"]
a=["a","d"]
print(  list( Counter(result) - Counter(a) )  )

#####建议用这种
result=["a","b","d","a",'a']
a=["a","d"]
data = []
for k,v in dict( Counter(result) - Counter(a) ).items():
    for i in range(v):
        data.append(k)

print(data)