LoginSignup
0
1

More than 3 years have passed since last update.

内包表記

Posted at

 内包表記

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のように、複数の要素を扱うオブジェクトです。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1