'in'キーワードを使用すると、要素が配列内にあるかどうかを確認できます。
a=[1,2,3]
if 1 in a:
print "1 present in a"
'in'がその要素を見つけた場所のインデックスを返す方法はありますか?
1-dリスト:
a=[1,2,3]
def indd(val):
try:
ind=a.index(val)
return ind,val
except:
return 'not found'
print(indd(1))
print(indd(5))
(0,1)
not found
3次元リストの場合、関数関数はx、y、zのタプルを返します。数値が3次元リスト内で繰り返されると、最小のインデックスが返されます。
def ind_3d(lis,val):
ind=[(j,i,k) for j,x in enumerate(lis) for i,y in enumerate(x) for k,z in enumerate(y) if z==val]
if len(ind)==0:
return 'not found'
else:
return ind[0]
a=[[[1,2,3],[4,5,6],[7,8,9]],[[11,12,13],[14,15,16],[17,18,19]]]
print(ind_3d(a,11))
print(ind_3d(a,5))
print(ind_3d(a,25))
出力:
(1, 0, 0)
(0, 1, 1)
not found
確実に存在することがわかっている場合は、リスト内a.index(1)
の位置を取得するために使用します。1
それ以外の場合は、try/catch ブロックを使用してください。
また、それらは Python では「リスト」と呼ばれます :) 用語を正確に理解すればするほど、それらがどのように実装され、どの機能をサポートしているかを後で追跡しやすくなります。
EDIT : 多次元リスト (つまり、2-D の場合のリストのリスト) の場合、次元n-1
である最上位レベルを反復処理する必要がありますn
。2 次元の場合、 を検索していると仮定すると1
、次のようなものが機能します。
for idx, val in enumerate(a):
if 1 in val:
return idx, val.index(1)