当前位置: 首页 > 面试题库 >

Python中具有重复项的两个列表之间的差异

师谦
2023-03-14
问题内容

我有两个列表,其中包含许多相同的项目,包括重复的项目。我想检查第一个列表中的哪些项不在第二个列表中。例如,我可能有一个这样的列表:

l1 = ['a', 'b', 'c', 'b', 'c']

还有一个像这样的列表:

l2 = ['a', 'b', 'c', 'b']

比较这两个列表,我想返回第三个列表,如下所示:

l3 = ['c']

我目前正在使用一些我之前确定的糟糕代码,我可以肯定它甚至无法正常工作,如下所示。

def list_difference(l1,l2):
    for i in range(0, len(l1)):
        for j in range(0, len(l2)):
            if l1[i] == l1[j]:
                l1[i] = 'damn'
                l2[j] = 'damn'
    l3 = []
    for item in l1:
        if item!='damn':
            l3.append(item)
    return l3

我怎样才能更好地完成这项任务?


问题答案:

您没有指定订单是否重要。如果没有,则可以在> = Python 2.7中执行此操作:

l1 = ['a', 'b', 'c', 'b', 'c']
l2 = ['a', 'b', 'c', 'b']

from collections import Counter

c1 = Counter(l1)
c2 = Counter(l2)

diff = c1-c2
print list(diff.elements())


 类似资料:
  • 问题内容: 我在Python中有两个列表,如下所示: 我需要用第一个列表中的项目创建第二个列表,而第二个列表中没有这些项目。从示例中,我必须得到: 有没有循环和检查的快速方法吗? 问题答案: 当心 你可能期望/希望它等于的位置。如果你想作为答案,则需要使用

  • remove和del有什么区别?我读到remove删除第一个匹配项,而del删除指定索引处的项,但我尝试使用index与remove一起使用,所以,实际的区别和实际的用途是什么???

  • 我需要使用python找出两个列表之间的差异。这个问题以前在堆栈溢出上被问过很多次,但没有一个提到重复(即和之间的区别是;我需要它是,因为每个数字在我的程序中都很重要)。 我尝试过使用numpy的setdiff1d,但它无法满足上述标准 如上所述,这只说明同一项是否在列表中,而不是它在该列表中的次数。我还可以使用其他功能吗?

  • 我有一个带有Person对象的数据库表。我的网络服务接收一个Person对象列表来更新这个Person表。我的应用程序现在包含两个列表: 我想遍历这些列表,并创建一个新列表,用于更新Person表。 fName和lName用于识别现有记录。下面是一个例子。 现在的 乔,布洛格斯,18岁,joe@me.com 简,布洛格斯,21岁,jane@me.com 弗洛,布洛格斯,25岁,flo@me.com

  • 我正在寻找一种方法,以找到不同的值,在两个数据帧的列。例如: 数据表A: 但是,有没有一个简单的解决方案,可以只使用DataFrame操作来获得,也许除了最后的Collect?