内包表記
前回、pyzbarを使ったQRコードの読み取り方法を紹介しました。
あわせて読みたい


【Python基礎】pyzbarを使ったQRコードの読み取り方法
QRコード 前回、PythonのNumPyでGeneratorを使った場合のリストからランダムに要素を抽出する方法を紹介しました。 今回はpyzbarライブラリを使ったQRコードの読み取り…
今回は辞書やタプル、セットの内包表記を紹介します。
Pythonで内包表記というとリスト内包表記を思い浮かべる人が多いと思います。
でも実は辞書やタプル、セットでも内包表記が使えるということを私も最近知りましたので、それを記事にしようというのが今回の事の発端です。
ちなみにリスト内包表記はこんな感じで記述する事でfor文の繰り返しをしつつ、リスト化することを同時にできる表記方法でした。
data1 = [i**2 for i in range(5)]
print(data1)
実行結果
[0, 1, 4, 9, 16]
それでは始めていきましょう。
辞書内包表記
辞書に対する内包表記です。
特に難しいことはなく、角括弧[]を波括弧{}に変えて、格納する値の前にキーを与えます。
data2 = {i:i**2 for i in range(5)}
print(data2)
実行結果
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
Pandasでのデータを一気に作成する際に便利だなと思います。
タプル内包表記
タプル内包表記の場合は角括弧[]を普通の括弧()に変えます。
ただしこのままだと得られるのはジェネレータのオブジェクトであり、値ではないです。
data3 = (i**2 for i in range(5))
print(data3)
実行結果
<generator object <genexpr> at 0x104a50580>
「*(アスタリスク)」を使ったアンパックをすると値を取得できます。
data3 = (i**2 for i in range(5))
print(*data3)
実行結果
0 1 4 9 16
セット内包表記
セット内包表記の場合は「set()」としてカッコの中にfor文を書くか、波括弧{}とするとセットとして扱われます。
data4 = set(i for i in [1, 1, 2, 2, 3, 3, 4, 4, 5, 5])
print(data4)
実行結果
{1, 2, 3, 4, 5}
data5 = {i for i in [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]}
print(data5)
実行結果
{1, 2, 3, 4, 5}
次回は複数のリストの組み合わせを同時に同じ順番で繰り返す方法を紹介します。
ではでは今回はこんな感じで。
コメント