中安拓也のブログ

プログラミングについて書くブログ

【Python3】特徴的だと思った機能まとめ その4

引き続き、『入門 Python 3』を読んでいて印象に残った箇所をメモに残していく

前回の記事

【Python3】特徴的だと思った機能まとめ その3 - 中安拓也のブログ

バージョン情報

  • Python 3.7.2

出典元

https://www.oreilly.co.jp/books/9784873117386/

オライリーの『入門 Python 3』

学習メモ

\による長い行の分割

バックスラッシュ(\)で行を分割することができる。

>>> age = 15

# 三項演算子の行を分割して読みやすくしている
>>> name = 'みゃー姉' \
... if age >= 18 \
... else 'アカネ'

>>> name
'アカネ'

内包表記

内包表記とは、イテレータ*1からPythonのデータ構造をコンパクトな構文で作成できる機能を指す。

内包表記で作成できるデータ構造として、リスト、辞書、集合などがあり、それぞれリスト内包表記、辞書内包表記、集合内包表記といった感じに命名されている。

リスト内包表記

リストをシンプルな構文で作成できる。リスト内包表記の文法は下記の通りとなる。

  • [expression for item in iterable]
    • リスト内包表記の最も単純な形式
  • [expression for item in iterable if condition]
    • 条件を追加した形式
# 単純な形式のリスト内包表記
>>> numList = [num for num in range(1, 7)]
>>> numList
[1, 2, 3, 4, 5, 6]

# 0 ~ 7の値を取り出して二乗した後、リスト化している
>>> squaringList = [i * i for i in range(0, 8)]
>>> squaringList
[0, 1, 4, 9, 16, 25, 36, 49]

# 条件を追加したリスト内包表記
>>> evenList = [j for j in range(0, 8) if j % 2 == 0]
>>> evenList 
[0, 2, 4, 6]
辞書内包表記

ディクショナリも内包表記を使用してワンライナーで作成することができる。{key_item : value_item for item in iterable}

# リストを定義
>>> marshalList = ['ランヌ', 'ミュラ', 'ダヴー', 'ベルティエ', 'ネイ']

# 内包表記でdictを作成
>>> marshal_dict = {i : marshalList[i] for i in range(0, 5)}
>>> marshal_dict 
{0: 'ランヌ', 1: 'ミュラ', 2: 'ダヴー', 3: 'ベルティエ', 4: 'ネイ'}

*1:要素を順番に取り出すことのできるオブジェクトのこと。リスト(配列)、辞書、集合、タプルなど