モジュールのレッスン (2/4)
タプルと解凍
タプルは、順序付けされた不変のシーケンスです。一度作成すると、次のことが可能になります。 その要素はもう変更されません。括弧付きで書いてありますが( 実際に定義するのはカンマです)。
タプルの作成
vuota = ()
una = (42,) # ATTENZIONE: senza virgola, (42) è solo 42 fra parentesi
coords = (10, 20)
mista = ("Ada", 36, True)インデックスとスライスによるアクセスは、リストの場合とまったく同じように機能します: coords[0]、
coords[-1]、mista[:2]。
リストの代わりにタプルを使用する場合
- 値が変更してはならない固定コレクションを表す場合
(座標、日付は
(year, month, day)、バージョンは(1, 2, 3))。 - 値を 辞書キー または要素として使用する必要がある場合
set: 不変 (ハッシュ可能) オブジェクトのみを使用できます。 - コードの読み取り者に、that 値が次の値であることを知らせたい場合 「冷凍」。
アンパック: Python の記述方法を変える機能
nome, anni = ("Ada", 36)
nome # 'Ada'
anni # 36括弧なしでも機能します (括弧を定義するのは カンマ です) タプル):
x, y = 10, 20また、一時変数を使用しない、純粋な Python のスワップが可能になります。 イディオム:
a, b = 1, 2
a, b = b, a
a, b # (2, 1)* による解凍 (残り)
「最初と残り」または「最初と最後、 真ん中」:
primo, *resto = [1, 2, 3, 4, 5]
primo # 1
resto # [2, 3, 4, 5]
primo, *centro, ultimo = [1, 2, 3, 4, 5]
centro # [2, 3, 4]これは スター付き割り当て と呼ばれます。スターは、必要なものすべてを収集します。 リストに残ります。
単一要素タプル トラップ
(42) はタプルではなく、括弧内の数値 42 です。を作るには
単一要素タプルの場合は、コンマが必要です: (42,)。それがなければ、どんな操作も
わかりにくい形で失敗します。
x = (42)
type(x) # <class 'int'>
x = (42,)
type(x) # <class 'tuple'>単一要素タプル
要素を 1 つだけ含むタプルを作成するには、括弧だけでは不十分です。t = (42,) のように、末尾にカンマを挿入する必要があります。カンマがないと、Python は括弧を単純な数学的グループとして扱い、単純な整数 42 を作成します。
試してみてください
`a = 1` および `b = 2` とすると、単一行でそれらの値を交換し (タプルのアンパック)、タプル (a, b) を評価します。
ヒントを表示
a、b = b、a
3 回の試行後に解決策が利用可能になります
復習演習
リスト `voti = [7, 5, 8, 6, 9]` から、アンパックを使用して最初のグレードを `primo` に抽出し、最後のグレードを `ultimo` に抽出し、残りを `centro` に抽出します。 `(primo, centro, ultimo)` を評価します。
ヒントを表示
primo、*centro、ultimo = voti → primo=7、centro=[5,8,6]、ultimo=9。
3 回の試行後に解決策が利用可能になります
追加の課題
Given the tuple `point = (4, 5, 6)`, use unpacking to assign the three values to the variables `x`, `y`, `z` respectively. Then, calculate the sum of `x`, `y`, and `z` and store it in `coord_sum`. Finally, evaluate `coord_sum`.
ヒントを表示
x、y、z = point を使用して、1 つのステートメントで 3 つの座標を抽出します。
3 回の試行後に解決策が利用可能になります