perbedaan list dan tuple di python

5 Perbedaan List dan Tuple di Python

Posted by

Saat kita pertama kali belajar tentang list dan tuple di Python, banyak dari kita yang masih bingung apa sih perbedaan list dan tuple. List dan tuple merupakan tipe data yang dapat menampung banyak objek. Keduanya juga sama-sama dapat berisi berbagai macam tipe data seperti string, integer, float, boolean, maupun list dan tuple itu sendiri.

List dan tuple juga sama-sama dapat diakses dengan menggunakan indeks. Namun, list dan tuple tetaplah merupakan dua tipe data yang berbeda. Nah, apa perbedaannya? Berikut ini perbedaan list dan tuple.

1. Perbedaan syntax

List dan tuple memiliki sedikit perbedaan syntax atau penulisan. List didefinisikan di dalam sepasang tanda kurung siku [], sedangkan tuple ditulis di dalam sepasang tanda kurung biasa (). Perhatikan contoh berikut.

Ini merupakan contoh penulisan list.

listBilangan = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Dan ini merupakan contoh penulisan tuple.

tupleBilangan = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

Jika kita print, hasilnya akan seperti ini.

print(listBilangan)
print(tupleBilangan)

Output:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

Seperti yang dapat kita lihat di atas, variabel listBilangan dan tupleBilangan sama-sama berisi nilai dari 1 sampai 10, namun penulisannya berbeda. listBilangan didefinisikan menggunakan [], sementara tupleBilangan didefinisikan menggunakan ().

Baca juga: Konsep Regresi Linear: Simple Linear Regression

Kita juga dapat mengecek tipe data dari dua variabel tersebut menggunakan fungsi type() untuk membuktikan bahwa listBilangan dan tupleBilangan memiliki tipe data yang berbeda.

print(type(listBilangan))
print(type(tupleBilangan))

Output:
<class 'list'> <class 'tuple'>

2. List bersifat mutable dan tuple bersifat immutable

Perbedaan list dan tuple yang kedua yaitu list bersifat mutable yang berarti dapat diubah elemennya, sedangkan tuple bersifat immutable yang berarti tidak dapat diubah elemennya. Misalnya kita akan coba mengubah elemen di indeks 4 pada listBilangan dan tupleBilangan.

Pertama kita akan mengubah elemen di indeks 4 pada listBilangan dengan nilai baru yaitu 100.

listBilangan[4] = 100
listBilangan

Output:
[1, 2, 3, 4, 100, 6, 7, 8, 9, 100]
Dari output di atas, terlihat tidak ada masalah saat kita mengubah nilai pada listBilangan. Sekarang kita akan mencoba dengan cara yang sama pada tupleBilangan.
tupleBilangan[4] = 100
tupleBilangan

Output:
TypeError                                 Traceback (most recent call last)
<ipython-input-7-6791e40d8fba> in <module>
----> 1 tupleBilangan[4] = 100
2 tupleBilanngan

TypeError: 'tuple' object does not support item assignment

Dapat dilihat bahwa, saat kita melakukan cara yang sama pada tupleBilangan, pesan error muncul sebagai tanda bahwa kita tidak bisa mengubah isi dari sebuah tuple.

Jadi, jika kita ingin menyimpan data yang sifatnya permanen dan tidak boleh diubah-ubah, tuple adalah pilihan yang lebih baik dibandingkan list. Sebaliknya, jika menginginkan yang lebih fleksibel yang dapat diubah kapanpun, gunakanlah list.

3. Penggunaan memori untuk tuple lebih sedikit dibandingkan dengan list

Dilihat dari segi konsumsi memorinya, tuple menghabiskan lebih sedikit memori dibandingkan list. Kita dapat mengeceknya menggunakan __sizeof__().

listBilangan = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
tupleBilangan = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print('Size of listBilangan: ', listBilangan.__sizeof__())
print('Size of tupleBilangan: ', tupleBilangan.__sizeof__())

Output:
Size of listBilangan: 120
Size of tupleBilangan: 104

listBilangan dan tupleBilangan sama-sama terdiri dari bilangan yang sama yaitu 1 sampai 10, namun ukuran memori listBilangan lebih besar dibandingkan dengan tupleBilangan.

Baca juga: Apa itu Regresi, Klasifikasi, dan Clustering (Klasterisasi)?

4. Tuple bisa digunakan sebagai key pada dictionary, sedangkan list tidak bisa

Karena sifatnya yang immutable atau tidak dapat diubah, tuple dapat digunakan sebagai key pada dictionary. Key pada dictionary harus bersifat hashable, artinya objek yang menjadi key harus memiliki nilai hash yang tidak pernah berubah. Hash sendiri adalah suatu kode berupa huruf maupun angka acak yang didapat dari hasil enkripsi.

dic = {('a', 10): 100,
       ('b', 20): 200}
dic

Output:
{('a', 10): 100, ('b', 20): 200}

Sekarang mari kita coba menggunakan list sebagai key.

dic = {['a', 10]: 100,
       ['b', 20]: 200}
dic

Output:
TypeError                                 Traceback (most recent call last)
<ipython-input-10-34988ab833a2> in <module>
1 dic = {['a', 10]: 100,
----> 2        ['b', 20]: 200}
3 dic

TypeError: unhashable type: 'list'

Seperti yang kita lihat di atas, saat list digunakan sebagai key, akan terjadi error yang mengeluarkan pesan error berupa TypeError: unhashable type: ‘list’.

Baca juga: Perbedaan Supervised dan Unsupervised Learning

5. List memiliki lebih banyak built-in function dibandingkan dengan tuple

Perbedaan list dan tuple yang terakhir adalah built-in function yang dimiliki list lebih banyak daripada tuple, artinya lebih banyak operasi yang dapat kita lakukan dengan list dibandingkan dengan tuple. Untuk mengeceknya kita dapat menggunakan fungsi dir().

Mengecek built-in function list

dir(listBilangan)

Output:
['__add__',
'__class__',
'__contains__',
'__delattr__',
'__delitem__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__gt__',
'__hash__',
'__iadd__',
'__imul__',
'__init__',
'__init_subclass__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__mul__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__reversed__',
'__rmul__',
'__setattr__',
'__setitem__',
'__sizeof__',
'__str__',
'__subclasshook__',
'append',
'clear',
'copy',
'count',
'extend',
'index',
'insert',
'pop',
'remove',
'reverse',
'sort']

Mengecek built-in function tuple

dir(tupleBilangan)

Output:
['__add__',
'__class__',
'__contains__',
'__delattr__',
'__dir__',
'__doc__',
'__eq__',
'__format__',
'__ge__',
'__getattribute__',
'__getitem__',
'__getnewargs__',
'__gt__',
'__hash__',
'__init__',
'__init_subclass__',
'__iter__',
'__le__',
'__len__',
'__lt__',
'__mul__',
'__ne__',
'__new__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__rmul__',
'__setattr__',
'__sizeof__',
'__str__',
'__subclasshook__',
'count',
'index']

Semoga bermanfaat!

modul data science ilmudatapy