2.8. Tuple

Sebuah tuple adalah urutan nilai yang immutable dan terurut. Setelah dibuat, item-item di dalamnya tidak dapat ditambahkan, dihapus, atau diubah.

2.8.1. Membuat tuple

Gunakan tanda kurung (atau hanya koma) untuk membuat tuple:

empty   = ()
point   = (3, 4)
triple  = 1, 2, 3                # parentheses are optional
mixed   = (1, "two", 3.14)
nested  = ((1, 2), (3, 4))

2.8.1.1. Jebakan elemen tunggal

Tanda kurung di sekitar nilai hanyalah tanda kurung; yang sebenarnya membuat tuple adalah koma. Tuple satu elemen memerlukan koma di belakang:

>>> (1)
1                                # just an int in parens
>>> (1,)
(1,)                             # a one-element tuple
>>> type((1)), type((1,))
(<class 'int'>, <class 'tuple'>)

2.8.2. Panjang, pengindeksan, dan slicing

Sama seperti list dan string -- len(), pengindeksan, slicing, in, dan + / * semuanya bekerja dengan cara yang sama:

>>> point = (3, 4, 5)
>>> len(point)
3
>>> point[0]
3
>>> point[1:]
(4, 5)
>>> 4 in point
True
>>> (1, 2) + (3, 4)
(1, 2, 3, 4)

2.8.3. Immutabilitas

Tuple tidak memiliki append, pop, sort, atau metode in-place lainnya. Penugasan berindeks memunculkan TypeError:

>>> point = (3, 4)
>>> point[0] = 99
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item assignment

Untuk "memodifikasi" tuple, bangun yang baru dengan nilai yang telah diubah.

2.8.4. Unpacking

Kekuatan utama tuple adalah unpacking: menugaskan setiap item ke variabel terpisah dalam satu pernyataan.

A three-element tuple (1, 2, 3) unpacking into three named variables x, y, z.

Unpacking mengikat setiap elemen tuple ke variabel bernama dalam satu penugasan.

>>> point = (3, 4)
>>> x, y = point
>>> x
3
>>> y
4

Sisi kanan dapat berupa iterable apa pun -- list, string, nilai kembalian fungsi:

>>> a, b, c = "abc"
>>> a, b, c
('a', 'b', 'c')

* di depan mengumpulkan "sisanya" dari unpacking ke dalam list:

>>> first, *rest = [10, 20, 30, 40]
>>> first
10
>>> rest
[20, 30, 40]

2.8.5. Beberapa nilai kembalian

Sebuah fungsi dapat mengembalikan tuple untuk menyampaikan beberapa nilai sekaligus; pemanggil meng-unpack-nya saat menerimanya:

def size_of(rect):
    return (rect[2] - rect[0], rect[3] - rect[1])

width, height = size_of((10, 20, 110, 140))
# width = 100, height = 120

Tanda kurung pada return bersifat opsional -- return a, b tanpa kurung juga merupakan tuple.

2.8.6. Tuple vs list

Panduan praktis untuk menentukan mana yang digunakan:

  • Tuple untuk data berbentuk tetap, sering kali heterogen: titik (x, y), warna (r, g, b), nilai kembalian berganda, argumen fungsi yang dikemas untuk digunakan nanti.

  • List untuk data dengan panjang variabel, sering kali homogen: daftar pengukuran, antrean item yang akan diproses, apa pun yang Anda harapkan untuk ditambahkan.

Tuple juga hashable (selama setiap elemen di dalamnya hashable), sehingga dapat digunakan sebagai kunci dalam dict.