Pythonのリストには、特定の要素のインデックスを取得するためのindex()
メソッドがあります。しかし、このメソッドはリスト内の最初の一致する要素のインデックスを返すため、同じ要素が複数存在する場合や特定のパターンを探す場合には限定的です。
そのため、以下にいくつかの代替案を紹介します。
1. enumerate()関数を使用する
enumerate()
関数は、リストの各要素とそのインデックスを返します。これを利用して、特定の要素のすべてのインデックスを取得することができます。
omnivores = ["Pig", "Dogs", "Duck", "Ostrich", "Warthog", "Dogs", "Bears"]
indices_of_dogs = [i for i, e in enumerate(omnivores) if e == 'Dogs']
print(indices_of_dogs) # [1, 5]
2. スライスと比較を使用する
特定のパターン(例えば、連続する要素)を探す場合、スライスと比較を使用することができます。
values = [1, 2, 3, 1, 2, 3]
if any(values[i : i + 3] == [1, 2, 3] for (i, v) in enumerate(values) if v == 1):
print('YES')
else:
print('NO')
このコードは、リストvalues
内で連続する1, 2, 3
のパターンを探しています。any()
関数は、条件を満たす要素が1つでもあればTrue
を返します。
以上、Pythonのリストでindex()
メソッドの代替となる方法をいくつか紹介しました。これらの方法を活用することで、より柔軟なリスト操作が可能になります。