Data Science|Basics

【完全マスター】!Pythonのindexの使い方を徹底解説!

Python初心者の方で「なんとなくindexメソッドの使い方は掴めてきたけど、まだイマイチよく分からない」と悩んでいる方もいるでしょう。

そこで今回は、indexの基礎知識からindexメソッドの使い方まで詳しく説明していきます。indexメソッドの使い方をマスターするためにも、ぜひ最後までご覧くださいね。


本ブログを運営しているTech Teacherは、業界初のプログラミング家庭教師サービスを提供しています。

その特徴は完全マンツーマン・フルオーダーメイド指導・30分ごとの利用が可能であるところです。

完全マンツーマン

Tech Teacherのマンツーマン指導なら理解できない箇所は何度も分かるまで説明を受けることができます。

フルオーダーメイド指導

Tech Teacherではあらかじめ決められたカリキュラムはありません。そのためご自身の学習状況や学びたいことに合わせた指導が可能です。

一括支払いなし

一般的なプログラミングスクールの料金体制はカリキュラムに対して一括払いですが、Tech Teacherでは利用した分だけの支払いとなります。そのため、大きな費用負担がなく気軽に始めることができます。

Pythonをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

indexについて

「index」とは、list型変数のある要素がlistの中で何番目かを示すもので、もし指定された値が存在しなければエラーを起こします。

1. list1 = [ ‘A’ , ‘B’ , ‘C’ , ‘D’ , ‘E’ ]
2.     0 1 2 3 4   # インデックス番号
3.     -5 -4 -3 -2 -1   # 負のインデックス

このようにindexは1からではなく0から始まるので注意してくださいね。

また、「indexメソッド」はシーケンスの値に当てはまるインデックスを返すメソッドです。シーケンスとは複数の要素をまとめて管理できる型のことで、他のプログラミング言語では配列と呼ばれています。

indexメソッドはリスト・タプル・文字列などのシーケンスに使用でき、セット型・辞書型には使用できないので注意しましょう。

補足としてリスト・タプル・文字列とはなにかをまとめておきます。

リスト 任意の型のデータを格納でき、要素には順序があるためインデックスを使用して要素を指定することが可能です。リストの要素は変更することができ、他のプログラミング言語での配列のように扱えます。
タプル こちらもリストと同様、任意の型のデータを格納でき、要素には順序があるためインデックスを使用して要素を指定することが可能です。リストと違う点は、タプルの要素は変更できないということです。
文字列 文字が連なったものですが、0文字の文字列や1文字だけの文字列もあります。0文字の文字列のことを空文字列と呼びます。

また、リストについてはこちらの記事でも詳しく解説しています!

https://www.tech-teacher.jp/blog/python-list/

indexメソッドの使い方

Pythonにおけるlistの要素のインデックス、つまり要素が何番目に格納されているかを表す番号を取得する方法を紹介していきます。

indexメソッドは次のように使用します。

1. シーケンス . index ( ‘value’ )

リストの要素が重複していない場合の使い方

リストの要素が重複していない場合には「index( )メソッド」を使用します。実際にコードを用いて詳しく説明していきます。

1. mylist = [ ‘aaa’ , ‘bbb’ , ‘ccc’ , ‘ddd’ , ‘eee’ ]
2. print( mylist . index ( ‘bbb’ ) )
3. # 実行結果
4. 1
5.
6. print( mylist . index ( ‘eee’ ) )
7. # 実行結果
8. 4

指定した要素が存在しない場合、ValueErrorが発生するので注意してください。

1. print( mylist . index ( ‘fff’ ) )
2. ValueError : ‘fff’ is not in list

このようにmylistに「’fff’」という要素は含まれていないため、エラーが返ってきます。

リストの要素が重複している場合の使い方

リストの要素が重複している場合の「index( )メソッド」は最初に見つかった要素に対応するインデックスだけを返すので注意してください。

1.  mylist = [ ‘aaa’ , ‘bbb’ , ‘ccc’ , ‘ccc’ , ‘aaa’ ]
2.  print ( mylist )
3.  # 実行結果
4.  [ ‘aaa’ , ‘bbb’ , ‘ccc’ , ‘ccc’ , ‘aaa’ ]
5.
6.  print ( mylist . index ( ‘aaa’ ) )
7.  # 実行結果
8.  0
9.
10. print ( mylist . index ( ‘ccc’ ) )
11. # 実行結果
12. 2

すべてのインデックスをリストで取得したい場合には、組み込み関数「enumerate( )」とリスト内包表記を使用します。「リスト内包表記」とは通常のリスト生成では複雑になってしまうようなプログラムを1行で記述する表記方法です。

「enumerate( )関数」を使用して重複のあるlist型変数から要素を取得する場合の記述方法は次の通りです。

1. [ i for i , x in enumerate ( list型変数 ) if x == value ]

実際にコードを使用して説明していきます。

1.  mylist = [ ‘aaa’ , ‘bbb’ , ‘ccc’ , ‘ccc’ , ‘aaa’ ]
2.
3.  for idx , val in enumerate ( mylist ) :
4. print ( idx , val )
5.
6.  # 実行結果
7.  0 aaa
8.  1 bbb
9.  2 ccc
10. 3 ccc
11. 4 aaa

このenumerate( )を利用して、次のように該当している全インデックスを取得することもできます。

1. mylist = [‘aaa’, ‘bbb’, ‘ccc’, ‘ccc’, ‘aaa’]
2. idxlist = [ ]
3. for idx , val in enumerate ( mylist ) :
4.  if val == ‘ccc’ :
5.   idxlist . append ( idx )
6.
7. print ( idxlist )
8.
9. # 実行結果
10. [ 2 , 3 ]

要素が1つだけ含まれている場合・リストに含まれていない場合は空のリストを返送することができ、繰り返し使用するようであれば関数にしておくと便利でしょう。

1.  # 要素が1つだけ含まれている
2.  print ( [ i for i , x in enumerate ( mylist ) if x == ‘’bbb’ ] )
3.  # 実行結果
4.  [ 1 ]
5.
6.  # リストに含まれていない値
7.  print ( [ i for i , x in enumerate ( mylist ) if x == ‘fff’ ] )
8.  # 実行結果
9.  [ ]
10.
11. # 繰り返し使用する場合
12. def my _ index _ multi ( list1 , x ) :
13.  return [ i for i , _x in enumerate ( mylist ) if _x == x )
14.
15. print ( my _ index _ multi ( mylist , ‘aaa’ ) )
16. # 実行結果
17. [ 0 , 4 ]
18.
19. print ( my _ index _ multi ( mylist , ‘bbb’ ) )
20. # 実行結果
21. [ 1 ]
22.
23. print ( my _ index _ multi ( mylist , ‘fff’ ) )
24. # 実行結果
25. [ ]

リストのリスト

リストの中にリストがある場合はどうなのでしょうか。見ていきましょう。

1.  list1 = [ [ 111 , 222 , 333 ] , [ ‘red‘ , ‘blue’ , ‘green’ ] ]
2.  list2 = 222
3.  list3 = [ ‘red’ , ‘blue’ , ‘green’ ]
4.
5.  x = list1 . index ( list2 )
6.  z = list1 . index ( list3 )
7.
8.  print ( x )
9.  print ( z )
10.
11. # 実行結果
12. ValueError : 222 is not in list

「222」はlist1の中の子リストには存在しますがlist1そのものにあるわけではありません。その結果index( )メソッドを使用することはできません。

最大値のインデックスを取得

「max( )」を使うと、最初に見つかった最大値の要素のインデックスが返送されます。

1. list = [ 111 , 555 , 777 , 333, 777 ]
2.
3. print( list. index ( max ( list ) ) )
4. #実行結果
5. 2

最大値が複数存在して、そのすべてのインデックスを取得したい場合は次のようにリスト内包表記を使用します。

1. list = [ 111 , 555 , 777 , 333 , 777 ]
2.
3. print( [ i for i , v in enumerate ( list ) if v == max ( list ) ] )
4. # 実行結果
5. [ 2 , 4 ]

リスト以外でindexメソッドを使う方法

リスト以外にもタプルや文字列でもindexメソッドを使用することができます。
ここからはタプルや文字列でindexメソッドを使用する方法を詳しく説明していきます。

タプル

タプルもリストと同じように「index( )メソッド」を持っているため次のように記述することが可能ですよ。

1. tuple = ( ‘aaa’ , ‘bbb’ , ‘ccc’ )
2. print ( tuple . index ( ‘bbb’ ))
3. # 実行結果
4. 1

文字列

文字列の位置を取得する場合のコードは次のようになっています。

1. str = ‘HelloWorld’
2. print ( str . index ( ‘l’ ) )
3. # 実行結果
4. 2

また、文字数を指定して抽出することもできます。

1.  str = ‘python’
2.
3.  print ( str [ 0 ] )
4.  # 実行結果
5.  p
6.
7.  print ( str [ 5 ] )
8.  # 実行結果
9.  n
10.
11. #負の値を使用すると文字列の後ろから指定可能
12. print ( str [ -1 ] )
13. # 実行結果
14. n
15.
16. print ( str [ -6 ] )
17. # 実行結果
18. p

「Tech Teacherで!~家庭教師ならではの3つの魅力~」

本Blogを運営するプログラミング家庭教師Tech Teacherは以下のような疑問をすべて解決できるサービスです。

・Pythonの応用をもっと学びたいが、値段が高いスクールに通うのは気が引ける

・目的別に短時間の利用ができるサービスがあったらいいな

比較対象 Tech Teacher プログラミングスクールA社
受講形態
1対1

1対3~5
担当教師
担任教師
×
講座別の講師
カリキュラム
自分専用指導

全員指導
仕事・学業との両立
可能
×
不可能
メンター制度
担任教師

異なる担当
料金
授業分だけ
×
一括払い
初期費用
入会金
22,000円
×
一括払い
528,000円
シミュレーション
(3ヶ月90分の指導を週1で行う)

164,500円
×
528,000円

以下、Tech Teacherの3つの魅力を紹介します。

Pythonをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

1.効率的な学習スタイル

一人のためだけの指導~1対1の完全個別指導~

一般的なプログラミングスクールでは大人数の対面講義や、録画講義の視聴またはオンラインでの受講がメインです。そうなると学習しながら生じた疑問をすぐに聞くことができずに、先に進んでしまい内容をうまく理解できなかったり、作業がうまく進まなかったりします。

家庭教師であれば、マンツーマンのため自分の課題にだけ焦点を当てて指導を受けられるので、1回の授業を濃い時間にすることができます。

無駄のない学習~フルオーダーメイド~

Tech Teacherは一般的なプログラミングスクールと異なり、あらかじめ決められたコースやカリキュラム設定がありません。
一般的なプログラミングスクールのカリキュラムでは、自分が本当に学習したいことを学ぶのにいくつか他の講義を受けなければなりません

Tech Teacherでは生徒様の現状の習熟度・目的・期間に応じてお悩みにダイレクトに刺さる授業を展開し、最短で目標となるゴールを目指せます。

2.自分のペースで学習できる

必要な分だけ~従量課金モデル~

Tech Teacherでは、他にはない「短時間(30分ごと)」の利用が可能です!勉強していてちょっとわからないところ、プログラミング学習のモチベーション維持など様々な疑問や悩みを解決することができます。
授業を受けた分だけ後払いする料金体系(3,960円〜 / 30分)のため、必要な期間に必要な分だけ受講できます。

好きな時間で~相性のいい教師の紹介~

Tech Teacherではあらゆるニーズに対応できる教師陣がいるため、生徒様の希望条件に最適な教師を紹介します。

Tech Teacherを受講している方のほとんどが仕事をしている社会人の方です。TechTeacherの家庭教師なら受講日時や回数を、生徒様のご都合に合わせて柔軟に調整することができ、スキルだけでなく都合の良い時間で指導できる教師を選べます。

3.確実に身につく

挫折しない~担任教師の継続指導~

オンライン・オンデマンドの講義の視聴形態だと、学習に対するモチベーションの維持が課題となり、当初の予定よりも受講期間が伸びたり、挫折したりする恐れがあります。

Tech Teacherでは、担任教師が生徒と二人三脚で学習をするため、学習が大変なときも寄り添ったサポートを受けられます。

具体的には学習計画の管理や受講目的を明確にした上で中間目標を設定し、それに向けた学習の指導をすることでモチベーションの維持を図ります。

いつでも質問できる~チャットサポート(オプション)~

担当教師は授業の時間以外に、チャットサービスを利用して、自分で学習しているときに生じた疑問をすぐに質問して解決することができます。

Javaをマンツーマン指導で学べるプログラミング家庭教師について詳しく知りたい方ほこちら

Tech Teacherへのお問い合わせ

質問のみのお問い合わせも受け付けております。

まとめ

今回indexメソッドの基礎知識や使い方について説明してきましたがいかがでしたでしょうか。

今回説明した要点をまとめると次のようになります。

  • indexとはシーケンスのある要素が何番目かということを表すもの
  • indexは0から始まり、負のインデックスは1番右側が-1となる
  • リストに含まれていない値を指定するとValueErrorが発生する
  • リストの要素が重複している場合は最初のインデックスだけを返す
  • indexメソッドはリスト以外にもタプルや文字列にも使用できる

indexを使用することによって要素の番号を取得することができます。しっかり押さえておきましょう。

このブログでは他にもPythonの学習に役立つ情報を発信しています!ぜひご覧ください。

【初心者向け】Pythonのmap関数とは?基本的な使い方を解説Pythonのmap関数の使い方がよく分からない方はいますか。本記事ではmap関数の使い方をサンプルコードを混じえて解説していきます。Python初心者でmap関数について知りたい方はぜひお読みください。...
【初心者向け】Pythonでデータサイエンティストを目指すには?データサイエンスについて知りたいが、調べてもよく分からない方はいますか。本記事ではPythonでデータサイエンティストを目指す方法、について解説していきます。データサイエンスを学ぼうと思っている方はぜひお読みください。 ...