python入門講座 | ループ処理2(for文とrange()で実戦的なループ処理)[第39回]

アラサーOLのためのpython入門講座
for文のループ対象をrange()にすることで様々なパターンのループを行うことができます。

Ciao!みなさんこんにちは!このブログでは主に
(1)pythonデータ解析,
(2)DTM音楽作成,
(3)お料理,
(4)博士転職
の4つのトピックについて発信しています。

今回は「アラサーOLのためのpython入門講座」です!この講座では、プログラミング初心者アラサーOLのMi坊さんに、pythonを学習する上でのアドバイスを行います!「パソコンもプログラミングも初心者だけど、プログラミングができるようになりたい!」という方のためにstep-by-stepで解説していきます。

for文とrange()を組み合わせて、様々なパターンのループ処理をする方法を解説します。range()を使うことで、変数iが0から99までひとつずつループする、0から99まで2つ飛ばしでループするといった様々なループ処理を実装できます!実戦で使う方法なのでマスターしましょう!

この記事を読めば、pythonでfor文の実戦的な書き方を知ることができます。ぜひ最後までお付き合いください!

Kaiko
Kaiko

この記事はこんな人におすすめ

  • 初心者だけどpythonを始めた!
  • pythonの基本的な使い方を知りたい!
  • 独学で学んだpythonの知識を整理したい!



Abstract | range()を使うことで様々なパターンのループができる

for文のループ対象をrange()にすることで、様々なパターンのループ処理が実装できます。

  • シンプルに0からn-1まで一つずつループする
  • 先頭を任意の数スキップしてループする
  • m個飛ばしで間欠的なループをする

など、実際のプログラミングで重宝します。単にある処理を所定の回数だけ繰り返したい場合でも使えますし、list型変数に対してループをかける場合やその他の配列タイプ変数に対してループを書ける場合にも使える方法です。実戦的なテクニックなので覚えましょう!



Background | ループ処理とfor文

ループ処理とは、同じ処理を一定回数繰り返すことです。Listなど配列タイプの変数のすべての要素や一部の要素に同じ処理を行いたいとき、一回一回の処理をいちいち書き下すことなく、いっぺんに処理することができます。ループ処理はPythonに限らずプログラミングで不可欠な処理です。

Pythonではfor文やwhile文を使ってループ処理を実装することができます。for文では予め繰り返し処理を行う回数が決まっています。一方、while文では繰り返しの範囲が決まっておらず、ある条件を満たしたら処理を終える、逆に言うと条件を満たすまでは延々と処理が繰り返されます。今回はfor文を扱います。

今回はfor文にrange()を組み合わせた実戦的な方法をご紹介します!for文については以下の過去記事もありますので、参考にご覧ください。

  1. for文の基礎: python入門講座 | ループ処理1(for文の基本的な使い方)



Method | for文とrange()を組み合わせた実戦的なループ処理

for文とrange()を組み合わせた実戦的な使い方を解説します。実際に手を動かしながら学んでいきましょう!Jupyter Notebookを立ち上げてコーディングしながら読み進めてください。練習問題の後にコーディング例も掲載しますので、やってみてどうしてもわからなければそれを見て進めてください。



準備 | python notebookの新規作成

まずはpython notebookを用意しましょう。いつものpython_practiceのディレクトリに「practice_for_range」という名前のpython notebookを作成してください。ターミナルを立ち上げて~/python_practiceに移動、jupyter notebookを起動し、ブラウザから新規→Python3でpython notebookを開いて、ファイル→リネームでファイル名を決定します。
もしやり方がわからなければ、過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」で詳しく解説しているので、これを見ながらやってみてください。

python notebookを起動したら、適宜Markdownセルに説明書きを加えながら下記の説明に沿ってコードを書いて実行していきましょう。Markdownセルやコードセルなどの用語やこれらの使い方についても、過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」を参照してください。練習問題の後にpython notebookの例を掲載します。もし書き方がわからなければそちらを見てください。



for文range関数を用いたfor文: range(n)

for文のループ対象をrange(n)とすることで、0からn-1までのn個の整数値についてループできます。以下の例を実行してみてください。

# loop from 0 to 9
for i in range(10):
    print(i)

この例では、ループの対象をrange(10)とすることで、変数iに0から9までの整数値が一つずつ代入されていきます。実行結果は以下のようになります。

0
1
2
3
4
5
6
7
8
9



range()を用いたlistに対するループ処理

range()を用いてlist型変数に対するループをかけることができます。listを直接ループの対象にすることもできますが、range()を使うことで現在が何回目のループなのかという情報を保持することができます。個人的にはlistに対するループであってもrange()を使うことが多いです。

range()の引数にlist型変数の長さを取ります。range(len(var))のように書きます。以下の例を実行してみましょう。

# define a list variable
var_list = ['python', 'R', 'C', 'fortran']

# loop for the list
for i in range(len(var_list)):
    # print index and element
    print(i, var_list[i])

はじめにlist型変数var_listを定義しています。for文の中では、現在のループ回数iとvar_listの要素を出力します。for文の対象を「range(len(var_list))」とすることで、var_listの要素の数だけループが回ります。実行結果は以下です。

0 python
1 R
2 C
3 fortran



先頭をスキップしてループ: range(k, n)

range()の書き方を変えることで、最初の数個をスキップすることができます。range(k, n)とすることで、kからn-1までのループとなります。例えば、0番目を予め定義しておき、1番目以降の要素は一つ手前の要素に何らかの処理を行って代入していくといった処理を行いたい場合を考えてみましょう。ループは1からn-1までとする必要があります。そのようなときにrange(1, n)という書き方をすると便利です。

以下の例を実行してみましょう。

# loop from 1 to 9
for i in range(1, 10):
    print(i)

この例では変数iには1から9までの整数値が代入されるループとなります。実行結果は以下です。

1
2
3
4
5
6
7
8
9



range()を用いたlistに対するループ処理(先頭をスキップ)

range()を用いたlistに対するループでも先頭をスキップすることができます。range(k, len(var))とすることで、変数varのk番目から最後の要素までをループすることができます。以下を実行してみましょう。

# define a list variable
var_list = ['python', 'R', 'C', 'fortran']

# loop for the list
for i in range(2, len(var_list)):
    # print index and element
    print(i, var_list[i])

この例では最初の2つの要素をスキップし、2番目と3番目の要素(’C’, ‘fortran’)を出力しています。実行結果は以下です。

2 C
3 fortran



range()を用いたlistに対するループ処理(末尾をスキップ)

range()を用いると、listの末尾をスキップすることもできます。ここでは、末尾の1つをスキップする例を見てみましょう。単純にrange(len(var))をrange(len(var)-1)とするだけです。以下の例を実行してみましょう。

# define a list variable
var_list = ['python', 'R', 'C', 'fortran']

# loop for the list
for i in range(len(var_list) - 1):
    # print index and element
    print(i, var_list[i])

ループの対象を「リストの長さ」を引数としたrange()ではなく、「リストの長さ-1」を引数としたrange()にすることで、最後の一つの要素をスキップできます。実行結果は以下となります。

0 python
1 R
2 C



間欠的なスキップでループ: range(k, n, m)

range()に3つめの引数を与えることで間欠的なループにすることができます。1個とばしや2つ飛ばしなど自由に設定できます。range(k, n, m)とすることで、kからn-1以下の最大の数までm個飛ばしでループします。以下を実行してみましょう。

# loop from 0 to 8 with an interval of 2
for i in range(0, 10, 2):
    print(i)

この例では0から9以下の最大の数まで2個飛ばし、すなわち0から8までの偶数をループすることになります。実行すると以下の結果となります。

0
2
4
6
8



range()を用いたlistに対するループ処理(間欠的なスキップ)

list型変数に対して1個飛ばしのループをかける例をやってみましょう。ループの対象をrange(k, len(var), m)とすることで、変数varのk番目から最後の要素までをm個飛ばしでループします。以下を実行してみましょう。

# define a list variable
var_list = ['python', 'R', 'C', 'fortran']

# loop for the list
for i in range(0, len(var_list), 2):
    # print index and element
    print(i, var_list[i])

この例では、len(var_list)は4なので、0から3まで1つ飛ばしでループします。したがって、0番目と2番目の要素が出力されます。結果は以下となります。

0 python
2 C



Results | 練習問題

練習問題をやってみましょう。以下の処理を行うコードを書いてみましょう。

  1. list型変数var_listを以下の要素で作成してください。
    • 値1: ‘dog’
    • 値2: ‘cat’
    • 値3: ‘mouse’
    • 値4: ‘rabbit’
    • 値5: ‘tiger’
  2. for文とrange()を使って、変数var_listの要素を、indexと一緒に1つずつ出力してください。
  3. for文とrange()を使って、変数var_listの値2以降の要素をindexと一緒に1つずつ出力してください。
  4. for文とrange()を使って、変数var_listの要素を、indexと一緒に1つ飛ばしで出力してください。



練習問題の例

練習問題の回答が完成したら回答例を確認しましょう!下の画面をスクロールすると回答例が見られます!参考にしてみてください。また、今回の記事で出てきた他のコードも載っているので参考にしてください!

練習問題おつかれさまでした!
今日はここまでです。Python Notebookを終了しておきましょう。もしPython Notebookを終了方法がわからなければ過去記事「python入門講座|pythonを使ってみよう2(Jupyter Notebookを使う方法)」の「Python Notebookの起動・終了方法」の章を参照してください!



Conclusion | まとめ

最後までご覧いただきありがとうございます!
今回はrange()を用いたfor文の実戦的な使い方を解説しました。for文の対象をrange()とすることで様々なパターンのループ処理を行うことができます。ループ処理を実装するのに必須の知識ですのでマスターしましょう!

以上「python入門講座 | ループ処理2(for文とrange()で実戦的なループ処理)」でした!
またお会いしましょう!Ciao!



References | 参考

以下の教科書を参考にして進めています!より詳しく学びたい方は購入して読んでみてください!

Pythonの参考教科書

コメント

タイトルとURLをコピーしました