2017-06-12 19 views
-4

2つのアイテムが同じ場所にあるかどうかをPythonの2つのリストにチェックする方法はありますか?たとえば私は、私はこのうち結果「3」を取得する方法をしたいが、私は、また、リスト内のすべての項目をチェックすることができるようにしたい。この結果2つのリストの同じ場所に同じ値があるかどうかを確認する

a=[1,2,3,4] 
b=[4,1,3,2] 

を取得できるようにしたいでしょうそれが最初のものを見つけた後に停止するだけではありません。

+4

これを確認する方法は、プログラムを書くことです。しかし、その前に、あなたはそれから何を得るべきかを知りたがっています。ポジションのリスト?実際の重複値のセットが見つかりましたか? – Anthon

答えて

1

あなたはこれを試すことができます。

a=[1,2,3,4] 
b=[4,1,3,2] 

same_place = [i for i, c in zip(a, b) if i == c] 

これは、次の2つのリスト内の同じ場所で発生するすべての値のリストが表示されます。

+0

'zip'は' a'と 'b'にループする正しい方法です – RaphaMex

1
a = [1, 2, 3, 4] 
b = [4, 1, 3, 2] 

for index, data in enumerate(zip(a, b)): 
    if data[0] == data[1]: 
     print('The same at index: {0}, value {1}'.format(index, data[0])) 
0

私のpythonは少し錆びているので、私の構文は少しばかりかもしれません。

あなたがどうなるのか効果的

が が、その後1でインデックスをインクリメントし、配列の長さに指数を比較し、相互に各配列の現在の要素を比較してループを作成し、これです。これが何をするか

i=0; 
a=[1,2,3,4]; 
b=[4,3,2,1]; 

while(i>= len(a) -1 && i>= len(b)-1){ 
    if(a[i] == b[i]){ 
    print(a[i]); 
    } 
    i++ 

、0にインデックス変数(i)を設定し、配列の長さを使用して、配列AとBの長さと比較されます。 (len(a)またはlen(b)) whileループは、配列がi以上の場合にのみ実行されます。したがって、配列が4アイテム、配列が80アイテムの場合、より短い配列の長さの回数だけループするので、範囲外のインデックスを作成しません。

len() - 1部分は、0から始まるインデックスを持つ配列と、インデックス(インデックス[0]を含む)の総数を指定するlen()関数によるものです。 たとえば、配列a []にはインデックス0,1,2,3がありますが、len()は4です。i = 4になるまでループすると、[4]とインデックスアウトがチェックされます-of-boundsエラーです。

(見つかった場合)、それはその後、スクリーニングするための番号を印刷し、あなたもちょうどそれがであるマッチング数とインデックスプリントアウトするだけでなく、私をプリントアウトすることができ

ノート。これは未完成のコードであり、一致するものが見つからなければ絶対に何もしません。

私はこれが助けて欲しいと思っています:)

関連する問題