Python: タプルに内包表記はないけど、代替方法はある
Pythonで内包表記が可能なのはリスト、辞書、集合です。 タプルは内包表記ができませんが、代わりとなる方法はあります。 ここではその方法を紹介します。
まずはリスト内包表記の書式を確認しておきます。
リスト内包表記の書式
[式 for 変数 in イテラブルなオブジェクト (if 条件)]
リスト内包表記の両端の角括弧[]の部分を丸括弧()に変更しても、 タプルは作成できません。 次のコードはNGの例です。 タプル tを基に、要素を2倍にした新しいタプル t2を「丸括弧()を使って」 作成しようとしています。
NGの例
t = (1, 2, 3) t2 = (v * 2 for v in t) print(t2) # 実行結果 <generator object <genexpr> at 0x0000014C6FC51A50>
上記の方法ではタプルは作成できません。
代替方法として組み込みのタプルのコンストラクタ tuple()を使用します。
tuple() — Python ドキュメント
書式
tuple([iterable])
先程のコードにtuple()を使うだけでタプルが作成できます。
t = (1, 2, 3) t2 = tuple(v * 2 for v in t) print(t2) # 実行結果 (2, 4, 6)
組み込みのtuple()を使ってタプルを作成していますが、 実質的には内包表記が使えていますから 代替方法としてはこれで十分だと思います。