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

Pythonの2つのリストで同じインデックスの不一致アイテムを検索する


2つのPythonリストの要素を、値と位置またはインデックスの両方の観点から比較する必要がある場合があります。この記事では、同じ位置にある2つのリストで、値が一致しない要素を見つける方法を説明します。

forループの使用

同様のインデックスの値を比較するforループを設計できます。値が一致しない場合は、結果リストにインデックスを追加します。 forループは、最初に最初のインデックスの値をフェッチし、次にif条件を使用して2番目のリストの値と比較します。

listA= [13, 'Mon',23, 62,'Sun']
listB = [5, 'Mon',23, 6,'Sun']

# index variable
idx = 0

# Result list
res = []

# With iteration
for i in listA:
   if i != listB[idx]:
      res.append(idx)
   idx = idx + 1

# Result
print("The index positions with mismatched values:\n",res)

出力

上記のコードを実行すると、次の結果が得られます-

The index positions with mismatched values:
[0, 3]

zip付き

zip関数は、各インデックスの要素を比較するときに、より短いコードを作成するのに役立ちます。インデックス値は、要素の値が一致しない位置についてキャプチャされます。

listA= [13, 'Mon',23, 62,'Sun']
listB = [5, 'Mon',23, 6,'Sun']

res = [listB.index(n) for m, n in
      zip(listA, listB) if n != m]

# Result
print("The index positions with mismatched values:\n",res)

出力

上記のコードを実行すると、次の結果が得られます-

The index positions with mismatched values:
[0, 3]

列挙あり

これはzip関数のアプローチと似ていますが、リストの1つに列挙関数を適用するときにforループが各要素とインデックスを通過する必要がある点が異なります。

listA= [13, 'Mon',23, 62,'Sun']
listB = [5, 'Mon',23, 6,'Sun']

res = [idx for idx, elem in enumerate(listB)
                           if elem != listA[idx]]

# Result
print("The index positions with mismatched values:\n",res)

出力

上記のコードを実行すると、次の結果が得られます-

The index positions with mismatched values:
[0, 3]

  1. Pythonでアイテムを含むリストを指定してアイテムのインデックスを見つける方法は?

    リスト内の要素の位置(そのことに関する任意のシーケンスデータ型)は、index()メソッドによって取得されます。このメソッドは、指定された要素の最初の出現インスタンスを検索します。 >>> L1=[45, 32, 100, 10, 24, 56] >>> L1.index(24) 4

  2. Pythonでリスト内の要素のインデックスを見つける方法は?

    List(および文字列やタプルなどの他のシーケンスタイプ)で使用できるindex()メソッドは、その中の特定の要素の最初の出現を見つけるのに役立ちます。 >>> L1=['a', 'b', 'c', 'a', 'x'] >>> L1 ['a', 'b', 'c', 'a', 'x'] >>> L1.index('a') 0 要素のすべての出現箇所のインデックスを取得す