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:
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
listBilanganOutput:
[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
tupleBilanganOutput:
TypeError Traceback [most recent call last]
in
----> 1 tupleBilangan[4] = 100
2 tupleBilannganTypeError: '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
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}
dicOutput:
{['a', 10]: 100, ['b', 20]: 200}
Sekarang mari kita coba menggunakan list sebagai key.
dic = {['a', 10]: 100,
['b', 20]: 200}
dicOutput:
TypeError Traceback [most recent call last]
in
1 dic = {['a', 10]: 100,
----> 2 ['b', 20]: 200}
3 dicTypeError: unhashable type: 'list'
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']