2012-03-26 19 views
0

2つの2次元リストをその位置でどのように比較するのかと思いました。たとえば、0と1の2つの2次元リストがあり、1が両方のリストの同じ場所にある場合にTrueを返す関数を作成したいとします。ここで2つの2次元リストを比較する

List1=[[0,0,0], 
     [1,0,0], 
     [0,0,1]] 

List1=[[0,0,0], 
     [1,0,0], 
     [0,0,0]] 

は、私が始めたものですが、私は続行するかどうかはわかりません。

def collide(a,b): 
    for x in range(3): 
     for y in range(3): 
collide(List1, List2) 

ヒント私は思っていた

if a[x][y]==1 and b[x][y]==1: 
    return True 

これはおそらく正しくありません。

答えて

0

あなたは0の2つのエントリも考慮していませんが、それは私にはうまく見えます。

リストの実際の長さを使用することもできます。代わりに

for x in range(len(a)): 
    for y in range(len(a[x])): 
     ... 

リストは同じサイズになると仮定します。

(衝突があった場合には、その行に得ているではないであろうから)あなたはまた、関数の最後にfalseを返すことを確認してください

+0

ああ、助けてくれてありがとう。 – bahaaz

0

対応するすべての要素が同じであればcollide(a,b)がtrueを返す場合、あなたは、ネストされたループがあることを内部の場合はそうでなければFalse、あなたがしたいと思います:

if a[x][y] != b[x][y]: 
    return False 

その後、外側のループの後、あなたはできますreturn True(その時点で、あなたはすべての要素をチェックしていて、どれも不一致でした)。

+0

待って、私はかどうかを確認するために見ているわけではありません2つのリストは同じかどうかです。リスト内の要素の位置が、別のリスト内の要素の位置と同じである場合。 – bahaaz

1
any(
    cell_1 and cell_2 
    for row_1, row_2 in zip(list_1, list_2) 
    for cell_1, cell_2 in zip(row_1, row_2) 
) 
関連する問題