Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの2つの数字のリストから欠落している数字を見つけるプログラム


nums1とnums2という2つの番号のリストがあるとします。必ずしも一意ではない要素がいくつかあります。しかし、これら2つのリストは、実際には同じ数のセットの異なる順列を表しています。ただし、それらのいくつかが欠落しています。これら2つのリストの欠落している番号を見つけて、すべて印刷する必要があります。

したがって、入力がnums1 =[4,5,8,8,6,9] nums2 =[3,4,4,8,8,8,6,9,5,8]の場合、出力は3はnums1には存在しませんが、nums2には存在するため、[3,4,8,8]になります。 4は両方に存在しますが、nums2には2つの4がありますが、nums1には1つしかないため、1つの4が欠落しています。同様に、nums2には4つの8がありますが、nums1には2つしかないため、2つが欠落しています。

これを解決するには、次の手順に従います-

  • c1:=nums1に存在する各要素の頻度を含むリスト
  • c2:=nums2に存在する各要素の頻度を含むリスト
  • all_nums:=nums1およびnums2からのすべての異なる番号を含むセット
  • res:=新しいリスト
  • all_numsのnごとに、
    • nがc1にない場合は、
      • resにn、c2[n]回挿入します
    • それ以外の場合、nがc2にない場合は、
      • resにn、c1[n]回挿入します
    • それ以外の場合、
      • c1[n]がc2[n]と同じでない場合、
        • nを挿入、| c1 [n]-c2 [n] |解像度への時間
  • return res

理解を深めるために、次の実装を見てみましょう-

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]

  1. 2つの文字列から珍しい単語を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの文字列が与えられているので、与えられた文字列から珍しい単語を取得する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # uncommon words def find(A, B):    # count    count = {}    # insert in A    for word in A.split():       count[word] = coun

  2. 2つのリストで欠落している値と追加の値を見つけるPythonプログラム?

    集合論では、集合Aの補集合はAにない要素を指します。集合Bに対するAの相対的な補集合は、集合AとBの差とも呼ばれます。ここではこの原理を適用します。 Pythonには違いの機能があります。 アルゴリズム Step 1 : first we create two user input list. A & B Step 2 : Insert A and B to a set. Step 3 : for finding the missing values of first list we apply difference function, difference of B from