メインコンテンツにスキップ
モジュール 3 · レッスン 2 / 4コース内の 10/36~10 min
モジュールのレッスン (2/4)

タプルと解凍

タプルは、順序付けされた不変のシーケンスです。一度作成すると、次のことが可能になります。 その要素はもう変更されません。括弧付きで書いてありますが( 実際に定義するのはカンマです)。

タプルの作成

Python
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 の記述方法を変える機能

Python
nome, anni = ("Ada", 36)
nome   # 'Ada'
anni   # 36

括弧なしでも機能します (括弧を定義するのは カンマ です) タプル):

Python
x, y = 10, 20

また、一時変数を使用しない、純粋な Python のスワップが可能になります。 イディオム:

Python
a, b = 1, 2
a, b = b, a
a, b   # (2, 1)

* による解凍 (残り)

「最初と残り」または「最初と最後、 真ん中」:

Python
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,)。それがなければ、どんな操作も わかりにくい形で失敗します。

Python
x = (42)
type(x)   # <class 'int'>
x = (42,)
type(x)   # <class 'tuple'>

単一要素タプル

要素を 1 つだけ含むタプルを作成するには、括弧だけでは不十分です。t = (42,) のように、末尾にカンマを挿入する必要があります。カンマがないと、Python は括弧を単純な数学的グループとして扱い、単純な整数 42 を作成します。

試してみてください

運動#python.m3.l2.e1
試行回数: 0読み込み中…

`a = 1` および `b = 2` とすると、単一行でそれらの値を交換し (タプルのアンパック)、タプル (a, b) を評価します。

エディターを読み込み中…
ヒントを表示

a、b = b、a

3 回の試行後に解決策が利用可能になります

復習演習

運動#python.m3.l2.e2
試行回数: 0読み込み中…

リスト `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 回の試行後に解決策が利用可能になります

追加の課題

運動#python.m3.l2.e3
試行回数: 0読み込み中…

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 回の試行後に解決策が利用可能になります