Python Tuple vs Daftar: Persamaan dan Perbedaan, Dijelaskan

Diterbitkan: 2022-08-08

Dalam panduan ini, Anda akan mempelajari persamaan dan perbedaan antara tupel dan daftar Python. Anda juga akan mengerti kapan Anda harus menggunakan Tuple.

Daftar dan tupel keduanya merupakan struktur data bawaan dengan Python. Mereka dapat digunakan untuk menyimpan koleksi elemen.

Dari dukungan untuk pengindeksan dan pengirisan hingga berisi tipe data yang heterogen, tupel dan daftar mungkin tampak memiliki fungsi yang serupa. Oleh karena itu, memahami persamaan dan perbedaan antara keduanya dapat membantu Anda memutuskan struktur data mana yang akan digunakan.

Mari kita mulai.

Anda dapat memulai REPL Python dan mengikuti tutorial ini. Anda juga dapat menggunakan editor Python online Geekflare untuk membuat kode.

Python Tuple vs Daftar: Apa Persamaannya?

Mari kita mulai dengan mempelajari persamaan antara daftar dan tupel. Untuk memfasilitasi pembelajaran yang lebih baik, kami menyajikan contoh daftar dan tupel.

python-Tuple-vs-daftar

#1 . Python Iterable

Dalam Python, daftar diapit oleh sepasang tanda kurung siku, sedangkan tupel diapit dalam tanda kurung. Anda juga dapat membuat tupel sebagai kumpulan nilai yang dipisahkan dengan koma—tanpa tanda kurung.

Keduanya dapat diubah; sehingga Anda dapat mengulanginya menggunakan for loop.

Sel kode di bawah ini menunjukkan cara mengulangi daftar.

 nums = [2,6,7,10] print(f"Type of nums is {type(nums)}") for num in nums: print(num) # Output Type of nums is <class 'list'> 2 6 7 10

Seperti yang dijelaskan di bawah ini, Anda juga dapat melakukan iterasi melalui Tuple menggunakan loop

 nums = (2,6,7,10) # Note: nums = 2,6,7,10 is a valid tuple as well. If needed, run a quick check! print(f"Type of nums is {type(nums)}") for num in nums: print(num) # Output Type of nums is <class 'tuple'> 2 6 7 10

#2 . Dukungan untuk Penciptaan dari Urutan Lain

Kesamaan berikutnya antara daftar dan tupel adalah bahwa mereka dapat dibuat dari urutan yang ada seperti string.

 sample_str = "Coding!"

Sel kode berikut menunjukkan bagaimana list(string) mengembalikan daftar, yang item daftarnya adalah karakter dalam string.

 list_from_str = list(sample_str) print(list_from_str) # Output ['C', 'o', 'd', 'i', 'n', 'g', '!']

Demikian pula, Tuple dapat dibuat dari string atau urutan lain menggunakan tuple(sequence) . Sel kode di bawah ini menunjukkan bagaimana Anda dapat melakukannya.

 tuple_from_str = tuple(sample_str) print(tuple_from_str) # Output ('C', 'o', 'd', 'i', 'n', 'g', '!')

# 3 . Dukungan untuk Pengindeksan dan Pengirisan

Python mendukung pengindeksan nol di mana elemen pertama berada di indeks nol, yang kedua di indeks satu, dan seterusnya. Python juga mendukung pengindeksan negatif, di mana elemen terakhir ada di indeks -1, elemen kedua hingga terakhir ada di indeks -2, dan seterusnya.

 list_from_str = ['C', 'o', 'd', 'i', 'n', 'g', '!'] print(list_from_str[1]) # o

Item pada indeks -2 adalah item kedua hingga terakhir, 'g'.

 tuple_from_str = ('C', 'o', 'd', 'i', 'n', 'g', '!') print(tuple_from_str[-2]) # g

Anda dapat menggunakan slicing ketika Anda ingin bekerja dengan bagian kecil dari daftar atau tupel. list[start:end] mengembalikan sepotong daftar yang dimulai dari awal indeks dan diperpanjang hingga akhir – 1. Nilai default untuk awal adalah 0, dan akhir adalah elemen terakhir dalam iterable.

Anda dapat mengiris tupel menggunakan sintaks yang sama. Mari kita buat irisan dari daftar dan tupel yang kita buat sebelumnya.

 list_from_str = ['C', 'o', 'd', 'i', 'n', 'g', '!'] print(list_from_str[0:5]) ['C', 'o', 'd', 'i', 'n']

Selain nilai awal dan akhir, Anda juga dapat menentukan nilai langkah. tuple(start:end:step) mengembalikan sepotong Tuple dari start hingga end - 1 , dalam langkah step .

 tuple_from_str = ('C', 'o', 'd', 'i', 'n', 'g', '!') print(tuple_from_str[::2]) ('C', 'd', 'n', '!')

Di sini, kami menetapkan nilai langkah ke 2. Jadi irisan berisi setiap elemen kedua.

#4 . Koleksi Beberapa Tipe Data

Dalam contoh yang telah kita pertimbangkan, semua item pada daftar dan tupel memiliki tipe data yang sama.

Namun, Anda dapat menyimpan nilai dari tipe data yang berbeda dalam satu daftar atau tupel.

Cuplikan kode di bawah student_list berisi nama siswa sebagai string, usia sebagai bilangan bulat, dan tanda yang diamankan sebagai float.

 student_list = ["John",22,96.5] for item in student_list: print(f"{item} is of type {type(item)}") # Output John is of type <class 'str'> 22 is of type <class 'int'> 96.5 is of type <class 'float'>

Kita dapat menemukan contoh serupa untuk sebuah tuple.

 student_tuple = ("Jane",23,99.5) for item in student_tuple: print(f"{item} is of type {type(item)}") # Output Jane is of type <class 'str'> 23 is of type <class 'int'> 99.5 is of type <class 'float'>

# 5 . Dukungan untuk Pengujian Keanggotaan

Daftar dan tupel memungkinkan Anda melakukan pengujian keanggotaan untuk keberadaan item tertentu. Jika Anda ingin memeriksa apakah item tertentu ada dalam daftar atau tupel, Anda dapat menggunakan operator in .

item in iterable dievaluasi ke True jika iterable berisi item ; lain, False .

 "Alex" in student_list # False "Jane" in student_tuple # True

Sejauh ini, Anda telah mempelajari persamaan antara daftar dan tupel dengan Python. Selanjutnya, mari kita pelajari perbedaan utama antara kedua struktur data tersebut.

Python Tuple vs Daftar: Apa Perbedaannya?

#1 . Mutabilitas Daftar dan Kekekalan Tuple dengan Python

Perbedaan paling penting antara daftar dan tupel di Python adalah bahwa tupel tidak dapat diubah . Ini berarti Anda tidak dapat memodifikasi Tuple di tempatnya.

️ Ini contohnya.

 tuple1 = ("Java","Python","C++") tuple1[0] = "Rust" # Output ----> 2 tuple1[0] = "Rust" TypeError: 'tuple' object does not support item assignment

Daftar adalah struktur data yang bisa berubah, jadi kita bisa memodifikasi daftar dengan mengubah item pada indeks tertentu, seperti pada sel kode berikut.

 list1 = ["Java","Python","C++"] list1[0] = "Rust" print(list1) # Output ['Rust', 'Python', 'C++']

#2 . Daftar Panjang Variabel vs Tuple Panjang Tetap

Daftar python adalah struktur data dengan panjang variabel.

Anda dapat melakukan hal berikut:

  • Tambahkan item ke akhir daftar
  • Tambahkan item dari daftar lain ke akhir daftar saat ini
  • Hapus item pada indeks tertentu dari daftar
 list1 = [2,3,4,5] # add an item to the end list1.append(9) print(list1) # add items from list2 to the end of list1 list2 = [0,7] list1.extend(list2) print(list1) # remove an item from list1 list1.pop(0) print(list1)

️ Output dari cuplikan kode di atas.

 # Output [2, 3, 4, 5, 9] [2, 3, 4, 5, 9, 0, 7] [3, 4, 5, 9, 0, 7]

Tuple adalah struktur data dengan panjang tetap. Jadi Anda tidak dapat menambah atau menghapus elemen dari Tuple yang ada. Tetapi Anda dapat mendefinisikan ulang Tuple untuk memuat elemen yang berbeda.

 tuple1 = (2,4,6,8) tuple1 = (1,8,9) print(tuple1) # Output (1, 8, 9)

# 3 . Ukuran dalam Memori

Sekarang kita akan membangun di atas apa yang kita pelajari di bagian sebelumnya: daftarnya adalah struktur data dengan panjang variabel .

Saat Anda menentukan daftar pada awalnya, ukuran tertentu dialokasikan untuk itu di memori. Sekarang, saat Anda mengubah daftar menggunakan metode append() atau extend() , memori tambahan harus dialokasikan untuk menyimpan elemen yang ditambahkan. Alokasi ini hampir selalu dilakukan lebih dari jumlah item yang Anda tambahkan.

Jadi ada kebutuhan untuk melacak jumlah item dalam daftar dan ruang yang dialokasikan. Selain itu, karena daftar adalah panjang variabel, ada penunjuk yang menunjuk ke alamat item daftar. Akibatnya, daftar dengan panjang k mengambil lebih banyak memori daripada tupel dengan elemen k yang sama.

Berikut ilustrasi sederhana.

python-Tuple-vs-daftar-ukuran

Anda dapat menggunakan metode getsizeof() modul sys bawaan pada objek Python untuk mendapatkan ukuran objek dalam memori.

 import sys list1 = [4,5,9,14] list_size = sys.getsizeof(list1) print(f"Size of list:{list_size}") tuple1 = (4,5,9,14) tuple_size = sys.getsizeof(tuple1) print(f"Size of tuple:{tuple_size}")

Daftar membutuhkan lebih banyak memori daripada tupel untuk jumlah dan nilai elemen yang sama, seperti yang diverifikasi pada output di bawah ini.

 # Output Size of list:104 Size of tuple:88
Tuple-vs-daftar-python

Kapan Anda Harus Menggunakan Tuple Python?

Dari perbedaan dan persamaan antara daftar Python dan tupel, Anda tahu bahwa jika Anda membutuhkan koleksi yang bisa berubah , Anda harus menggunakan list .

Tetapi kapan Anda harus menggunakan Tuple?

Kami akan membahasnya di bagian ini.

#1 . Koleksi Hanya Baca

Kapan pun Anda ingin koleksi tidak berubah, Anda harus mendefinisikannya sebagai Tuple. Misalkan color = (243,55,103) sebuah tuple yang berisi nilai RGB yang sesuai dengan bayangan warna. Mendefinisikan warna sebagai tuple memastikan bahwa itu tidak dapat dimodifikasi.

Intinya, ketika Anda membutuhkan koleksi untuk menjadi read-only: nilai tidak boleh diubah selama program, Anda harus mempertimbangkan untuk menggunakan tuple. Ini akan mencegah modifikasi nilai yang tidak diinginkan.

#2 . Kunci Kamus

Misalnya, Anda membuat kamus menggunakan item daftar key_list sebagai kunci. Anda dapat menggunakan metode dict.fromkeys() untuk membuat kamus dari daftar.

 key_list = list("ABCD") dict.fromkeys(key_list) {'A': None, 'B': None, 'C': None, 'D': None}

Misalkan Anda memodifikasi daftar untuk memuat 'D' sebagai elemen pertama (indeks 0)— sebelum membuat kamus.

Sekarang, apa yang terjadi pada kunci kamus 'A'?

Jika Anda mencoba membuat kamus dari key_list dan mengakses nilai yang sesuai dengan kunci 'A', Anda akan menemukan KeyError .

 key_list[0] = 'D' dict.fromkeys(key_list)['A'] --------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-31-c90392acc2cf> in <module>() ----> 1 dict.fromkeys(key_list)['A'] KeyError: 'A'

Kunci kamus harus unik. Jadi Anda tidak dapat memiliki 'D' kedua sebagai kunci.

 dict.fromkeys(key_list) {'B': None, 'C': None, 'D': None} # A is no longer a key.

Jika Anda menggunakan tuple, modifikasi seperti itu tidak mungkin dilakukan, dan kemungkinan kecil Anda akan mengalami kesalahan. Oleh karena itu, Anda sebaiknya lebih suka membuat kamus menggunakan item Tuple sebagai kunci.

 key_tuple = tuple("ABCD") dict.fromkeys(key_tuple) {'A': None, 'B': None, 'C': None, 'D': None} key_tuple[0] = 'D' --------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-12-2cecbefa7db2> in <module>() ----> 1 key_tuple[0] = 'D' TypeError: 'tuple' object does not support item assignment

# 3 . Argumen Fungsi

Kekekalan tupel juga membuatnya cocok untuk diteruskan sebagai argumen fungsi.

Pertimbangkan fungsi find_volume() berikut yang mengembalikan volume balok dengan dimensi: panjang, lebar, dan tinggi.

 def find_volume(dimensions): l,b,h = dimensions return l*b*h

Misalkan dimensi ini tersedia dalam daftar yang disebut dimensions . Panggilan ke find_volume() dengan dimensions sebagai argumen mengembalikan volume.

 dimensions = [2,8,5] find_volume(dimensions) 80

Anda selalu dapat mengubah dimensi yang disimpan dalam daftar.

 dimensions = [20,8,5] find_volume(dimensions) 800

Namun, terkadang Anda membutuhkan nilai untuk tetap konstan dan menolak modifikasi. Saat itulah Anda harus mempertimbangkan untuk menyimpan argumen sebagai Tuple dan menggunakannya dalam pemanggilan fungsi.

#4 . Mengembalikan Nilai dari Fungsi

Di Python, Anda akan menemukan tupel dalam mengembalikan nilai dari fungsi. Saat Anda mengembalikan beberapa nilai dari suatu fungsi, Python secara implisit mengembalikannya sebagai Tuple.

Pertimbangkan fungsi berikut return_even() :

 def return_even(num): even = [i for i in range(num) if (i%2==0)] return even,len(even)
  • Dibutuhkan nomor num sebagai argumen
  • Ini mengembalikan daftar angka genap dalam interval [0,num) dan panjang daftar itu.

Mari kita atur nilai num 20 dan panggil fungsinya.

 num = 20

Memanggil return_even() mengembalikan dua nilai dalam sebuah Tuple. Anda dapat memanggil fungsi type() dengan pemanggilan fungsi sebagai argumen verifikasi.

 type(return_even(num)) # <class 'tuple'>

Anda dapat mencetak nilai pengembalian untuk memverifikasi bahwa itu adalah Tuple yang berisi daftar angka genap sebagai item pertama dan panjang daftar sebagai item kedua.

 print(return_even(num)) ([0, 2, 4, 6, 8, 10, 12, 14, 16, 18], 10)

Karena ada dua item dalam tuple, Anda dapat membongkarnya menjadi dua variabel, seperti yang ditunjukkan di bawah ini.

 even_nums, count = return_even(num) print(even_nums) print(count) [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] 10

Kesimpulan

Saya harap tutorial ini memberikan perbandingan komprehensif Python Tuple vs list.

Mari kita selesaikan tutorial dengan ringkasan singkat:

  • Daftar dan tupel adalah struktur data bawaan dengan Python.
  • Kesamaan : iterables, dukungan untuk pengindeksan, pengirisan, tipe data yang berbeda, dan operator untuk pengujian keanggotaan.
  • Perbedaan utama : Daftar dapat berubah, dan tupel tidak dapat diubah.
  • Perbedaan lainnya : Panjang tupel tetap dan panjang daftar variabel, ukuran memori tupel lebih kecil.
  • Kapan Anda harus menggunakan tupel? Untuk koleksi yang tidak dapat diubah, kunci kamus, dan argumen fungsi.

Selanjutnya, periksa proyek Python untuk berlatih dan belajar. Atau pelajari metode untuk menghapus item duplikat dari daftar Python. Selamat belajar! maka, selamat coding!