Python3入門 反復処理( for 構文 )

for 構文

 

for 構文はイテラブル( イテレータに対応している )オブジェクトを扱い、処理することができます。

  • イテレータ:イテレーションごとににリスト、辞書などから要素を個々に取り出し、返すもの。
  • イテラブル:リスト、文字列、文字列、辞書、タプル、集合など

 

つまり、イテラブルオブジェクトを for 構文で処理すると、一度に1つずつ要素を取り出せることができます。

 

リスト処理

 

書式

 

要素変数というのは、リストの要素毎に同じ変数をつけていくので要素変数と呼ばせていただきます。

 

 

文字列処理

 

書式

 

文字列を for構文 で処理すると、1字ずつ文字が要素変数に返されます。

 

 

辞書を処理

 

キー(key)を抽出

 

書式

 

辞書変数を for構文 で処理すると、キー(key)だけが要素変数に返されます。

 

 

値(value)を抽出

 

values()関数を使うと、辞書のだけ要素変数に返されます。

 

書式

 

 

 

キー、値を抽出

 

キーと値の両方をタプルの形で返したい場合には、items()関数を使います。

書式

 

タプルとして抽出するか、値として抽出するか選べます。

 

 



 

zip()関数の複数のイテラブルの反復処理

 

zip()関数 を使うと、複数のイテラブルを並列的に反復処理することができます。

 

書式

 

 

 

food の要素数は 1つ 他のリストより多いが、zip()関数 は要素数の少ない方に合わせるため、無視される

 

zip()関数で辞書を作成

 

英語 <-> 日本語 の辞書を作ります。

 

 

range() 関数によるループ範囲指定

 

range()関数 を使うと、指定した範囲の数値の流れを返すことができます。

 

書式

 

  • startを省略すると 0 から始まる。
  • end は必須引数。反復回数が end – 1 に注意
  • step のデフォルトは 1。-1 にすると逆になる。

 

 

逆出力

 

リスト内包表記

 

内包表記とは、1つ以上のイテレータからPythonコードをコンパクトにできる形式です。

内包表記を使うと、反復処理や制御構文を結合することができるようになります。

 

基本

 

for構文と基本的に書式は同じですが、少し違います。

 

書式

 

整数のリスト作成します。

 

 

制御構文を追加

 

書式

 

偶数の整数リストを作成

 

 

for ネストの内包表記

 

for 構文のネスト構造はこのようなものです。

 

プログラムの流れ

  1. for文1 : x = 0
  2. for文2 : y = 2,1 →  出力 0,2  0,1
  3. for文1 : x = 1 
  4. for文2 : y = 2,1 →  出力 1,2  1,1

for文1 に入り、for文2 が全て終わるまで、for文1 には戻りません。

 

これを内包表記にします。

 

タプルとしての抽出方法・値としての抽出方法(タプルのアンパック)、どちらでもできる。

 

辞書包括表記

 

辞書の内包表記があります。

 

書式

 

次のプログラムは “difficult”という文字列を反復処理し、同じ文字が何回現れるか数えるものです。

count()関数 についてはこちら

 

 

 

集合内括表記

 

書式

 

 

 

ジェネレータ内包表記

 

リスト、辞書、集合と内包表記がありましたが、タプルには内包表記は存在しません。

書式

 

 

タプルの内包表記に見えるかもしれませんが、タイプをみてみるとジェネレータオブジェクトを返しています。

 

しかし、ジェネレータは値を作って渡したあとは、値は覚えていないので、ジェネレータは一度しか使うことはできないです。

 

関数へ

フォローする

スポンサーリンク


Python

Posted by pythonista