
「タプル内包表記」はなぜないの?
Python
の
4
つの組み込みデータ構造(タプル、リスト、集合、辞書)は多くの用途があり、
タプル以外はすべて内包表記で作成できます。
なぜでしょうか?
「タプル内包表記」という考え方は意味をなしません。タプルは不変でしたよね。いったん
タプルを作成したら、変更できません。これは下の短い
IDLE
セッションが示しているよう
に、タプルの値を作成できないことも意味しています。
12
章 高度なイテレーション
you are here
507
新しい空の
タプルを作成。
タプルに動的に
データを追加しよう
としています。
でもタプルは不変
なので、既存のタ
プルには追加でき
ません。
ここでは奇妙なことや特別なことは起こっていません。タプルで予想される振る舞いです。
タプルを一度作成したら、変更できません。この事実だけでも、内包表記内でタプルを使えな
い理由としては十分です。しかし、下の
>>>
プロンプトでの操作を見てください。
1
番目のルー
プと
2
番目のループは少し違います。
1
番目のリスト内包表記の
[]
が、
2
番目では
()
になって
います。
どうなっているので
しょう?どちらの
ループも同じ結果と
なります。
この
for
ループとリスト内包
表記の組み合わせは、リスト
の各要素の値を
3
倍した値を
表示します。こちらは
[]
で
囲まれているので、リスト
内包表記だとわかります。
でも、こちらを見てください。
()
で囲まれているので
「タプル内包表記」のようですが、
そんなものは存在しません。
けれど
も、このループの出力は
期待どおりです。変ですよね? ...