内包表記
Pythonには内包表記と呼ばれる記法があります。
内包表記とは、リストコンプリヘンションと同じ意味です。
三種類ありますが、リストの内包表記から説明していきます。
リストオブジェクトとループを利用して新たなリストを生成する構文。
他の言語にはあまりない独特な構文ですが、慣れると非常に便利そして非常に高速というのがメリット
内包表記の基本的な書き方
[式 for 変数 in シーケンス]
リスト内包表記を使用しない場合
num_list = [1, 2, 3, 4, 5]
number_list = []
for num in num_list:
> new_num = num * 2
> number_list.append(new_num)
print(number_list)[2, 4, 6, 8, 10]
リスト内包表記を使用する場合
num_list = [1, 2, 3, 4, 5]
number_list = [num * 2 for num in num_list ]
print(number_list)[2, 4, 6, 8, 10]
要はリスト内包表記を使うことによって、短くまとまった記載にできるということです。
以下のように表記することでif文を使用することも可能です。
[式 for 変数 in シーケンス if リスト要素に対する条件]
num = “1, 2, 3, 4, a,5"
number = [int(s) for s in num.split() if s.isdigit()]
print(number)[1, 2, 3, 4, 5]
ディクショナリ内包表記
リスト内包表記と同じく、辞書型の要素をまとめて処理することができる。 使い方はリスト内包表記と同じ。
内包表記の基本的な書き方
{キー:for 変数 in シーケンス (if 条件)}
subject = {‘kokugo’: 75, ‘suugaku’: 64, ‘eigo’: 92}
num = {point: str(n) + ‘点’ for point, n in subject.items()}
print(num)
{‘kokugo’: 75点, ‘suugaku’: 64点, ‘eigo’: 92点}
セット内包表記
集合内包表記とも呼ばれます
セット内包表記の基本的な書き方
{式 for 変数 in シーケンス (if 条件)}
num_set = {number for number in range(19) if number % 3 == 0}
print(num_set)
{0, 3, 6, 9, 12, 15, 18}
イテレータとは、
集合の要素に準々にアクセスする場合に使用するインターフェースで、コレクションを繰り返し使うためにあるものです。
リスト、セット、マップなど複数の種別がありますが、イテレータはそれらにアクセスするための仕組みです。
例えば、javaでは、Set#iteratorメソッドIteratorを取りだし、順番に要素を取得しますが、Pythsonではイテレータオブジェクトを使用します。
イテレータを使用することで、要素へのアクセスを記述することが可能です。
Pythonのfor文においてはiterableを範囲にとって、暗黙的にiteratorを利用する点を指して内部イテレータと呼ばれる場合もある。
※インターフェース
コンピュータで、異なる機器・装置のあいだを接続して、交信や制御を可能にする装置やソフトウェアのこと
※コレクション
リストやSetのように、複数の要素を扱うオブジェクトです。