Ana içeriğe geç
Modül 3 · Ders 2 ders 4Kurstaki 10/36~10 min
Modül dersleri (2/4)

Tuple'lar ve ambalajı açma

Demet sıralı ve değişmez bir dizidir: Bir kez oluşturulduktan sonra artık öğelerini değiştirmeyin. Parantezle yazılmıştır (her ne kadar aslında onu tanımlayan şey virgüldür).

Bir demet oluşturma

Python
vuota = ()
una = (42,)             # ATTENZIONE: senza virgola, (42) è solo 42 fra parentesi
coords = (10, 20)
mista = ("Ada", 36, True)

Dizine göre erişim ve dilimleme, tam olarak listelerdeki gibi çalışır: coords[0], coords[-1], mista[:2].

Liste yerine tuple ne zaman kullanılır?

  • Değer, değişmemesi gereken sabit bir koleksiyonu temsil ettiğinde (koordinatlar, tarih (year, month, day), sürüm (1, 2, 3)).
  • Değeri sözlük anahtarı olarak veya bir öğe olarak kullanmanız gerektiğinde a set: yalnızca değişmez (hash edilebilir) nesneler kullanılabilir.
  • Kodun okuyucusuna that değerinin sinyalini vermek istediğinizde "dondurulmuş".

Paketi açma: Python'u yazma şeklinizi değiştiren özellik

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

Ayrıca parantez olmadan da çalışır (bu, virgül ile tanımlanır) demet):

Python
x, y = 10, 20

Ve geçici bir değişken olmadan değiştirmeye izin verir, saf bir Python deyim:

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

* (geri kalan) ile paketi açma

"İlkini ve geri kalanını" veya "ilkini, sonuncusunu" yakalamak istediğinizde, orta":

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]

Buna yıldızlı atama denir: yıldız, bir listede kalıyor.

Tek elemanlı demet tuzağı

(42) bir demet değil, parantez içindeki 42 sayısıdır. yapmak için tek öğeli tanımlama grubu için virgül gerekir: (42,). O olmadan herhangi bir işlem kafa karıştırıcı bir şekilde başarısız olur.

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

Tek elemanlı tuple'lar

Yalnızca bir öğe içeren bir demet oluşturmak için parantez tek başına yeterli değildir: sonuna bir virgül eklemelisiniz, örneğin t = (42,). Virgül olmadan, Python parantezleri basit matematiksel gruplandırma olarak ele alır ve 42 düz bir tamsayı oluşturur.

Deneyin

Egzersiz#python.m3.l2.e1
Denemeler: 0Yükleniyor…

'a = 1' ve 'b = 2' verildiğinde, bunların değerlerini tek bir satırda değiştirin (demet açma) ve demet (a, b)'yi değerlendirin.

Düzenleyici yükleniyor…
İpucu göster

a, b = b, a

3 denemeden sonra çözüm mevcut

Alıştırmayı gözden geçirin

Egzersiz#python.m3.l2.e2
Denemeler: 0Yükleniyor…

"Voti = [7, 5, 8, 6, 9]" listesinden, birinci sınıfı "primo"ya, sonuncuyu "ultimo"ya ve geri kalanları "centro"ya çıkarmak için paket açmayı kullanın. '(primo, centro, ultimo)' değerini değerlendirin.

Düzenleyici yükleniyor…
İpucu göster

primo, *centro, ultimo = oy → primo=7, centro=[5,8,6], ultimo=9.

3 denemeden sonra çözüm mevcut

Ek zorluk

Egzersiz#python.m3.l2.e3
Denemeler: 0Yükleniyor…

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`.

Düzenleyici yükleniyor…
İpucu göster

Üç koordinatı tek bir ifadede çıkarmak için x, y, z = point'i kullanın.

3 denemeden sonra çözüm mevcut