【python】rangeとlen の組み合わせたfor文の使い方

スポンサーリンク
Python

この記事でお伝えすること

  • pythonのrange関数len関のそれぞれの使い方
  •  for文におけるrange関数len関数を組み合わせた使い方

を紹介していきます。

pythonの初心者の中には

for文でのrangeとlenの組み合わせがどう使えばいいか分からない!

こういう場合にはrange()だけで使えばいい?len()は必要ない?

と悩む方もいると思います。

ふと忘れた時に困るrange()とlen()との組み合わせ、そしてfor文と合わせた場合の使い方。

本記事でrange関数len関数の意味や使い方for文と組み合わせた使い方を解説していきます。

range関数の使い方

range関数はある特定の範囲の数を持つという意味があります。

range関数の使い方を細かくみると主に4つの使い方があります。

  • 0から指定値まで連続の数字を持つ
  • 指定の範囲内で連続の数字を持つ
  • 指定の範囲内で指定の増え方で数字を持つ
  • 指定の範囲内で指定の減り方で減らすことも可能

それぞれの使い方を説明していきます。

0から指定値まで連続の数字を持つ

range(stop)

rangeに入れる引数を一つの数値とします。

するとstopの引数として数値が入ることになります。

この場合は0から入れた引数の一つ前までの整数を返します

list(range(5))
>> [0, 1, 2, 3, 4]

list(range(10))
>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

list(range(0))
>> []

rangeの引数に5を入れると0から4(引数の一つ前)までの整数を連番に出力します。

同じく引数を10とすると、0から9までが連番として出力されます。

引数0 では、空のリストが出力されます。
0から0のひとつ前(-1)までになるため、空になります。

指定の範囲内で連続の数字を持つ

range(start,stop)

rangeに入れる引数を二つの数値とします。

するとこの二つはstartとstopの引数とされます。

この場合、startとした引数の数値からstopとした引数の一つ前までの整数を返します

list(range(1,5))
>> [1, 2, 3, 4]

list(range(5,10))
>> [5, 6, 7, 8, 9]

list(range(5,1))
>> []

rangeの引数に1と5を入れると1から4(stop引数の一つ前)までの整数を連番に出力します。

同じく引数を5と10とすると、5から9までが連番として出力されます。

では、もし引数を逆にした場合、start引数を5とstop引数1では、空のリストが出力されます。
これはrangeの中で、5から1のひとつ前(0)までを取ることとなり、5〜0になるため、空になります。

0~5ではうまくいきますが、反対ですね。

指定の範囲内で指定の増え方で数字を持つ

range(start,stop,step)

rangeに入れる引数を三つとします。

するとstartとstopとstepの引数として入れられます。

この場合、startとした引数の数値から、stop引数の一つ前まで、stepの引数ごとに順列に返します

list(range(1,5,2))
>> [1, 3]

list(range(0,9,3))
>> [0, 3, 6]

list(range(1,5,10))
>> [1]

rangeの引数に1と5と2を入れると1から4までの中で2ごとの整数を出力します。それが1,3になります。

同じく引数を0と9と3とすると、0から8の3ごと(0,3,6)が出力されます。

では、もしstart引数とstop引数の範囲以上のstep引数を指定した場合、start引数のみを出力します。
これはstart引数からstep引数ごとの数値を出力するため、startの数値以降が無いためになります。

指定の範囲内で指定の減り方で減らすことも可能

range(start,stop,-step)

ここではrangeに入れる引数を先程と同じように三つとしますが、stepにマイナスを入れます。

すると、startとした引数の数値から、stopの引数の一つ前まで、step引数ごとに逆順に返します

list(range(5,1,-2))
>> [5, 3]

list(range(10,0,-3))
>> [10, 7, 4, 1]

list(range(1,5,-2))
>>[]

rangeの引数に5と1と-2を入れると5から2までの中で-2ごとの整数を出力します。
それが5,3になります。

同じく引数を10と0と-3とすると、10から1の-3ごと(10,7,4,1)が出力されます。

ここで注意すべきは、今までと異なり、start>stopの関係性があることです。
でないと空の出力になってしまいます。

以上がrangeの使い方です。ここからlen()を使ったrange()の使い方を解説します。

len関数の使い方

まず、lenには文字列やリスト、タプル、辞書、などのオブジェクトの長さや要素の数を取ります。

サンプルを見てみましょう。

#文字列
print(len('this is test.'))
>> 13

#リスト
l = ['this', 'is', 'test', '.']
print(len(l))
>> 4

#タプル
t = ('this', 'is', 'test', '.')
print(len(t))
>> 4

#辞書
d = {'this':1, 'is':2, 'test':3, '.':4}
print(len(d))
>> 4

このようにlenには引数となるオブジェクトの長さや要素の数を返します。

これをrangeと組み合わせます。

rangeとlenの組み合わせ

lenにはオブジェクトの長さや要素の数を出力します。「6」や「8」などをです。

しかし、それだとfor文に必要な0からの連番は出力されません。

それを補うのがrangeになります。

range(len())によって、文字列の長さやリスト、辞書の要素の数を出力して、rangeの引数とすると0から連番が出力されてfor文にlenを使用することができます。

実際のサンプルコードを見てみましょう。
サンプルコードでは文字列とリストを元にrangeとlenでのそれぞれの出力を書いてあります。

test = 'sample code'
testlist = [0, 1, 2, 3, 4]

print(len(test))
>> 11
print(len(testlist))
>> 5

print(range(len(test)))
>>range(0, 11)
print(range(len(testlist)))
>>range(0, 5)

for i in range(len(test)):
    print( i ,':', test[i] )
>> 0 : s
>> 1 : a
>> 2 : m
>> 3 : p
>> 4 : l
>> 5 : e
>> 6 :  
>> 7 : c
>> 8 : o
>> 9 : d
>> 10 : e

for j in range(len(testlist)):
    print( j ,":", testlist[j])
>> 0 : 0
>> 1 : 1
>> 2 : 2
>> 3 : 3
>> 4 : 4

このようにfor文で使う場合、lenでオブジェクトの長さ、要素の数を出力して

rangeで0からlenで出力される数の一つ前までの連番を出力して使います。

オブジェクトをfor文で出力したい時、このrangeとlenの組み合わせを使うのが一番簡単です。

最後に

pythonをより学習するならpython全般を学習できる「PyQ」をオススメします。

PyQは、pythonの基礎からスクレイピング機械学習Webサイト作成まで広く取り扱っているため、pythonの技術が格段に上がります!

もし気になる方は、一度覗いてみることをオススメします。

「本気でPythonを学びたいあなたへ PyQ」

以上です。

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