GVKun编程网logo

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

12

在本文中,我们将详细介绍Python中具有重复项的两个列表之间的差异的各个方面,并为您提供关于python列表重复的相关解答,同时,我们也将为您带来关于python–如何找到可能有重复数字的3个列表之

在本文中,我们将详细介绍Python中具有重复项的两个列表之间的差异的各个方面,并为您提供关于python 列表 重复的相关解答,同时,我们也将为您带来关于python – 如何找到可能有重复数字的3个列表之间的区别、python – 查找列表中整数之间的差异、python 统计两个列表的差异值、Python 获取两个类型列表之间的差异的有用知识。

本文目录一览:

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

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

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

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

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

答案1

小编典典

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

l1 = [''a'', ''b'', ''c'', ''b'', ''c'']l2 = [''a'', ''b'', ''c'', ''b'']from collections import Counterc1 = Counter(l1)c2 = Counter(l2)diff = c1-c2print list(diff.elements())

python – 如何找到可能有重复数字的3个列表之间的区别

python – 如何找到可能有重复数字的3个列表之间的区别

参见英文答案 > Difference Between Two Lists with Duplicates in Python                                    4个
我有3个列表,我想找到第1 /第2和第2 /第3之间的差异
并打印出来.

这是我的代码:

n1 = [1,1,2,3] 
n2 = [1,2] # Here the 3 is not found ("3" is not present in n1 at all)
n3 = [1,2]   # here 1 is not found (there are fewer "1"s in n3 than in n2)
for x in n1: 
   if x not in n2:
      print x  
for m in n2: 
   if m not in n3: 
      print m 

但我得到的输出只有3.

如何使它输出1和3?我也尝试使用套装,但它只打印了3次.

最佳答案
由于您似乎关心在两个列表中找到项目的次数,您需要从您要比较的列表中删除匹配的项目:

comp = n2[:]  # make a copy
for x in n1:
    if x not in comp:
        print x
    else:
        comp.remove(x)
# output: 3

或使用collections.Counter

from collections import Counter
print Counter(n1) - Counter(n2)
# output: Counter({3: 1})

它告诉你n1中哪些项不在n2中,或者在n1中比在n2中更常见.

所以,例如:

>>> Counter([1,3]) - Counter([1,2])
Counter({2: 2,3: 1})

python – 查找列表中整数之间的差异

python – 查找列表中整数之间的差异

经过多次修改后,我终于拿出一段代码来获取同一列表中每个整数之间的差异,并将它们转储到一个新列表中.这是我的代码:

ints = [3,5,9,15,36]
difs = []
h = 0

while h < len(ints) - 1:    
    difs.append(ints[1 + h] - ints[0 + h])
    h = h + 1
print difs

运行时,列表’difs’包含[2,4,6,21](即’int’列表中整数之间的差异.

我的问题:是否有更简单的功能 – 也许是numpy – 自动执行此操作?

解决方法

numpy中有一个函数: numpy.diff().

>>> import numpy
>>> numpy.diff([3,36])
array([ 2,21])

python 统计两个列表的差异值

python 统计两个列表的差异值

列表有加法,列表的加法就是列表的拼接。

在列表中,没有减法操作,但有时我们需要计算两个列表的差异值,一般的求列表差异值的方法只能求得不存在重复元素的差异值,但是当元素存在重复现象,那求得的差异值并不是我们真正想要的,现发现了一个高级的求出列表差异值的方法,不仅可以得到差异值元素,还能得到相差的个数,真是妙,分享给大家 ~

1. 简单的求列表差异值的2种方法:

适用场景:不存在重复元素

方法一:

In [1]: list1 = [1, 2, 3, 4, 5, 6, 7, 8]

In [2]: list2 = [2, 3, 5, 6, 7]

In [3]: list(set(list1)-set(list2))
Out[3]: [8, 1, 4]

方法二:

In [5]: list1 = [1, 2, 3, 4, 5, 6, 7, 8]

In [6]: list2 = [2, 3, 5, 6, 7]

In [7]: [i for i in list1 if not i in list2]
Out[7]: [1, 4, 8]

不适用场景:列表中存在重复元素

''''''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
''''''
In [8]: list1 = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]

In [9]: list2 = [1, 2, 3, 3, 4, 4, 5]

In [10]: list(set(list1)-set(list2))
Out[10]: []

In [11]: [i for i in list1 if not i in list2]
Out[11]: []

可以看到,这时候无论用哪一种方法都无法得到我们想要的结果,这时候统计2个列表差异值的高级方法出来了。

2. 得到2个列表的差异值并给出差异值个数的高级方法

In [42]: from collections import Counter

In [43]: list1 = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]

In [44]: list2 = [1, 2, 3, 3, 4, 4, 5]

In [45]: for key, value in (Counter(list1)-Counter(list2)).items():
    ...:     print("key = ", key, "value = ", value)
    ...:
key =  2 value =  1
key =  3 value =  1
key =  4 value =  2
key =  5 value =  4

In [46]: list((Counter(list1) - Counter(list2)).elements())
Out[46]: [2, 3, 4, 4, 5, 5, 5, 5]

注意,在用这个方法求差值的时候不同的减数和被减数得到的结果是不同的,要根据具体需要赋值。

Python 获取两个类型列表之间的差异

Python 获取两个类型列表之间的差异

如何解决Python 获取两个类型列表之间的差异?

实际上我有一个名为“Employee”的类,包含以下属性:

class Employee:
    id: int
    name: str
    age: int

此外,我收到了两个列表(来自不同的数据库),每个项目都是一个“员工”实例。类似的东西

listA = [{id: 1,name: ''john  doe'',age: 20},{id: 2,name: ''marry'',age: 27}]
listB = [{id: 1,name: ''john'',age: 27}]

如何比较这两个列表并返回与另一个列表的不同之处?

例如:返回一个仅包含 john doe 实例的新列表。

解决方法

浏览一个列表的所有项目并选择那些不在另一个列表中的,反之亦然:

[item for item in listA if item not in listB] +\
[item for item in listB if item not in listA]
#[{''id'': 1,''name'': ''john  doe'',''age'': 20},# {''id'': 1,''name'': ''john'',''age'': 20}]

如果列表很大,您可以通过将它们转换为项目的冻结集并采用对称集差来提高性能:

setA = set(frozenset(l.items()) for l in listA) 
setB = set(frozenset(l.items()) for l in listB)
setA ^ setB
#{frozenset({(''id'',1),(''name'',''john''),(''age'',20)}),# frozenset({(''age'',20),(''id'',''john  doe'')})}

今天关于Python中具有重复项的两个列表之间的差异python 列表 重复的介绍到此结束,谢谢您的阅读,有关python – 如何找到可能有重复数字的3个列表之间的区别、python – 查找列表中整数之间的差异、python 统计两个列表的差异值、Python 获取两个类型列表之间的差异等更多相关知识的信息可以在本站进行查询。

本文标签: