用Python从两个数字列表中查找缺失数字的程序
假设我们有两个数字列表,分别是nums1和nums2。有些元素不一定是唯一的。但这两个列表实际上代表了同一组数字的不同排列。但是,其中一些丢失了。我们必须找到这两个列表中缺失的数字并将它们全部打印出来。
因此,如果输入类似于nums1=[4,5,8,8,6,9]nums2=[3,4,4,8,8,8,6,9,5,8],那么输出将是[3,4,8,8]因为我们可以看到3不在nums1中,但它在nums2中,所以它丢失了。4存在于两者中,但在nums2中有两个4,但在nums1中只有一个,因此缺少一个4。类似地,nums2有四个8,但在nums1中只有2个,因此缺少两个。
示例
让我们看看以下实现以获得更好的理解-
from collections import Counter def solve(nums1, nums2): c1 = Counter(nums1) c2 = Counter(nums2) all_nums = set(nums1) | set(nums2) res = [] for n in all_nums: if n not in c1: res = res + [n]*c2[n] elif n not in c2: res = res + [n]*c1[n] else: if c1[n] != c2[n]: res = res + [n]*abs(c1[n]- c2[n]) return res nums1 = [4,5,8,8,6,9] nums2 = [3,4,4,8,8,8,6,9,5,8] print(solve(nums1, nums2))
输入
[4,5,8,8,6,9], [3,4,4,8,8,8,6,9,5,8]输出结果
[3, 4, 8, 8]