Python - continue文とenumerate()関数とzip()関数

ループの先頭に戻るcontinue文を使ってみる

Python - 処理を繰り返すwhile文とbreak文では、ループを抜けるbreak文について解説しました。
continue文は実行中のループの処理を中断してブロックの先頭に戻るための処理を行います。

例えば、[1,2,3,0,4,5,0,0,6,7,0,8,9,0]というリストから、「0」以外の要素のみを表示させるには以下のようにします。

nums = [1,2,3,0,4,5,0,0,6,7,0,8,9,0]

for num in nums:
  if num == 0:
    continue
  print (num)

実行結果は以下の通りです。

% python for.py
1
2
3
4
5
6
7
8
9

if文でリストから取り出した要素が「0」なら、print文は実行されずにcontinue文でループの先頭に戻ります。

インデックスと要素を取得するenumerate()を使ってみる

for文などでListを処理する場合に、要素の他にインデックスを取得する場合に、enumerate()関数を使用します。

例えば、["春","夏","秋","冬"]というリストから、以下のように表示したいとします。

1.春
2.夏
3.秋
4.冬

enumerate()関数を使った記述は以下のように記載します。

seasons = ["春","夏","秋","冬"]

for index,season in enumerate(seasons):
    print (str(index + 1) + "." + season)

実行結果は以下の通りです。

% python for.py

1.春
2.夏
3.秋
4.冬

もちろん以下のようにカウントアップ用の変数を使用しても実現は可能です。

seasons = ["春","夏","秋","冬"]

cnt = 1
for season in enumerate(seasons):
    print (str(cnt) + "." + season)
    cnt += 1

zip()関数で複数リストから要素を取り出す

zip()関数を使えば、複数のリストの要素を順番に取り出すことができます。

seasons1 = ["春","夏","秋","冬"]
seasons2 = ["spring","summer","autumn","winter"]

上記の2つのリストを使って、以下のように表示させてみます。

春:spring
夏:summer
秋:autumn
冬:winter
seasons1 = ["春","夏","秋","冬"]
seasons2 = ["spring","summer","autumn","winter"]

for (season1,season2) in zip(seasons1,seasons2):
  print (season1 + ":" + season2)

zip()関数を使用すると、seasons1とseasons2の要素を順番に変数season1とseason2に代入していきます。

もし2つのListの要素の数が違う場合は、少ない方のListに合わせられます。

seasons1 = ["春","夏"]
seasons2 = ["spring","summer","autumn","winter"]

for (season1,season2) in zip(seasons1,seasons2):
  print (season1 + ":" + season2)

seasons1の要素数を2つにした場合の実行結果は以下になります。

% python for.py
春:spring
夏:summer

3つ以上のListを利用することも可能です。

lists1 = [1,2,3]
lists2 = [4,5,6]
lists3 = [7,8,9]

for (list1,list2,list3) in zip(lists1,lists2,lists3):
  print(list1,list2,list3)

実行結果は以下の通り。

% python for.py
1 4 7
2 5 8
3 6 9

関連記事

メールマガジン

ネットワ-ク初心者のみなさま。
ネットワークの基礎知識を疎かにすることは
大変危険です!!

「初心者にも理解できるネットワーク技術」

これを読めばネットワークの基礎が分かる!!
ネットワーク関連の仕事に就きたいとお考えの学生の方や、ネットワークに興味があって転職を考えている社会人の方、まずは登録してみてください。

もちろん無料です!!

↓メールマガジン購読はこちら↓

メールアドレス: