指定した要素のリスト内でのインデックスを調べる #
指定した要素がリスト内でどの位置にいるかを調べる方法を示す。
JavaではListクラスにある**indexOf()**というメソッドで、要素があるインデックスを取得することができる。
int indexOf(Object o)
なお、リスト内に指定した要素が複数入っていた場合は、一番最初にある要素のインデックスを返す。
指定した要素がリスト内にない場合は、-1を返す。
また、リストで後ろの方から検索を行う**lastIndexOf()**というメソッドもある。
int lastIndexOf(Object o)
indexOfとは逆に、リスト内に指定した要素が複数入っていた場合は、一番最後にある要素のインデックスを返す。
実行例を下記に示す。
import java.util.ArrayList;
import java.util.List;
class Main{
//List println
public static void listprint(String name,List<Integer> l){
System.out.print(name + ": ");
for(int i=0;i<l.size();i++){
System.out.print(l.get(i) + " ");
}
System.out.println();
}
public static void main(String args[]){
List<Integer> l = new ArrayList<Integer>();
l.add(1);
l.add(3);
l.add(100);
l.add(0);
l.add(3);
listprint("l", l);
System.out.println("index of \'1\': " + l.indexOf(1));
System.out.println("index of \'3\': " + l.indexOf(3));
System.out.println("index of \'5\': " + l.indexOf(5));
System.out.println("last index of \'1\': " + l.lastIndexOf(1));
System.out.println("last index of \'3\': " + l.lastIndexOf(3));
System.out.println("last index of \'5\': " + l.lastIndexOf(5));
}
}
実行結果
> java Main
l: 1 3 100 0 3
index of '1': 0
index of '3': 1
index of '5': -1
last index of '1': 0
last index of '3': 4
last index of '5': -1
Pythonではリストの関数に**index()**というのがあり、引数に指定した要素のリスト内でのインデックスを返してくれる。
list.index(x[, start[, end]])
指定した要素xがリスト内に複数ある場合は、リスト内の最初の要素のインデックスを返す。
リストの指定した範囲内のみで調べたい場合は、引数start,endに値を設定して行うと、指定した範囲内で行える。
指定した要素xがリスト内に無い場合ValueErrorが返される。
>>> a=[1,3,100,0,3]
>>>
>>> a.index(1) #a全体で1を探索
0
>>> a.index(3) #a全体で3を探索
1
>>> a.index(3,1) #a[1]以降で3を探索
1
>>> a.index(3,2) #a[2]以降で3を探索
4
>>> a.index(3,5) #a[5]以降で3を探索 -> 無いのでエラー
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 3 is not in list
>>>