[Python]配列を1つ飛ばしでループするには?

python

どうも、ちょげ(@chogetarou)です。

配列(array)を1つ飛ばしでループする方法を紹介します。

スポンサーリンク

方法

配列(array)を1つ飛ばしでループする方法は、2つあります。

インデックス

ひとつは、インデックスを1つ飛ばしでループする方法です。

まず、for文のinの左辺にループ変数、右辺にrange()を指定します。

range()の第1引数に「0」、第2引数に「len(配列)」、第3引数に「2」を指定します。

そして、for文にループ処理を指定します

ループ変数で、配列(array)のインデックスを取得します。

#最初から最後までの全てのインデックスを1つ飛ばしでループ
#arr=対象の配列
for i in range(0, len(arr), 2):
    #ループ処理
    #ループ変数でインデックスを取得

上記のfor文は、配列(array)のインデックスを1つ飛ばしでループします。

もし、範囲を指定したい場合は、range()の第1引数に範囲の最初の位置、第2引数に範囲の最後の位置、第3引数に「2」を指定します。
(範囲の最後の位置は、配列の要素数以下)

#インデックスの範囲を指定する場合
#start=範囲の最初の位置, end=範囲の最後の位置(リストの要素数以下)
for i in range(start, end, 2):
    #ループ処理
    #ループ変数でインデックスを取得

範囲の最初の位置は「0」、範囲の最後の位置は「len(配列)」です。

使用例

nums = ["one", "two", "three", "four", "five", "six", "seven", "eight"]

for i in range(0, len(nums), 2):
    print(i, ":", nums[i])
出力:
0 : one
2 : three
4 : five
6 : seven

使用例2

import numpy as np

nums = np.array(["one", "two", "three", "four", "five", "six", "seven", "eight"])

for i in range(3, len(nums), 2):
    print(i, ":", nums[i])
出力:
3 : four
5 : six
7 : eight

もうひとつは、値を1つ飛ばしでループする方法です。

まず、for文のinの左辺にループ変数、右辺に配列(array)名と[start:end:2]を指定します。
(start=範囲の最初の位置、end=範囲の最後の位置)

そして、for文にループ処理を指定します

ループ変数で、配列(array)の値を取得します。

#arr=対象の配列, start=範囲の最初の位置, end=範囲の最後の位置
for value in arr[start:end:2]:
    #ループ処理
    #ループ変数で値を取得

上記のfor文は、対象の配列(array)の値を1つ飛ばしでループします。

[start:end:2]のstartを省略した場合は、範囲の最初の位置を先頭になります。

[start:end:2]のendを省略した場合は、範囲の最後の位置は末尾になります。

使用例

nums = ["one", "two", "three", "four", "five", "six", "seven", "eight"]

for value in nums[1:6:2]:
    print(value)
出力:
two
four
six

使用例2

import numpy as np

nums = np.array(["one", "two", "three", "four", "five", "six", "seven", "eight"])

for i in nums[::2]:
    print(i)
出力:
one
three
five
seven

まとめ

配列(array)を1つ飛ばしでループする方法は、次の2つです。

  • インデックスを1つ飛ばしでループする方法
    for i in range(0, len(arr), 2): #ループ処理
  • 値を1つ飛ばしでループする方法
    for i in arr[start:end:2]: #ループ処理

コメント

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