Python - Salin Daftar
Halo, para pemrogram Python yang berbakat! Hari ini, kita akan menyelam ke dalam dunia yang menarik tentang menyalin daftar di Python. Sebagai guru ilmu komputer ramah yang tinggal di sekitar, saya di sini untuk membimbing Anda melalui perjalanan ini dengan penjelasan yang jelas, banyak contoh, dan mungkin saja beberapa lelucon di samping itu. Jadi, mari kita mulai!
Menyalin Daftar di Python
Sebelum kita melompat ke berbagai cara menyalin daftar, mari kita pertama-tama mengerti mengapa kita perlu menyalin daftar. Bayangkan Anda memiliki daftar belanja, dan Anda ingin membagikannya dengan teman kost Anda. Anda bisa memberikan mereka daftar asli Anda, tetapi apa jika mereka memutuskan untuk menambahkan "cokelat" kepadanya (siapa yang tidak)? Tiba-tiba, daftar belanja sehat yang telah Anda rencanakan dengan hati-hati kalah! Ini dimana proses penyalinan menjadi sangat berguna.
Di Python, ketika Anda menetapkan daftar ke variabel baru, Anda tidak membuat daftar baru. Sebaliknya, Anda membuat referensi baru ke daftar yang sama. Mari kita lihat ini dalam aksi:
original_list = [1, 2, 3, 4, 5]
new_list = original_list
print("Daftar asli:", original_list)
print("Daftar baru:", new_list)
new_list.append(6)
print("Daftar asli setelah modifikasi:", original_list)
print("Daftar baru setelah modifikasi:", new_list)
Output:
Daftar asli: [1, 2, 3, 4, 5]
Daftar baru: [1, 2, 3, 4, 5]
Daftar asli setelah modifikasi: [1, 2, 3, 4, 5, 6]
Daftar baru setelah modifikasi: [1, 2, 3, 4, 5, 6]
Kaget? Kedua daftar berubah karena mereka sebenarnya adalah daftar yang sama di memori. Ini dimana penyalinan menjadi penyelamat!
Salin Dangkal pada Daftar Python
Salin dangkal membuat objek daftar baru, tetapi elemen di dalam daftar baru adalah referensi ke objek yang sama di daftar asli. Ini seperti membuat fotokopi dari daftar belanja Anda – Anda memiliki kertas baru, tetapi barang-barang yang ditulis di atasnya adalah sama.
Mari kita lihat bagaimana membuat salin dangkal:
import copy
original_list = [1, [2, 3], 4]
shallow_copy = copy.copy(original_list)
print("Daftar asli:", original_list)
print("Salin dangkal:", shallow_copy)
shallow_copy[1][0] = 'dua'
print("Daftar asli setelah modifikasi:", original_list)
print("Salin dangkal setelah modifikasi:", shallow_copy)
Output:
Daftar asli: [1, [2, 3], 4]
Salin dangkal: [1, [2, 3], 4]
Daftar asli setelah modifikasi: [1, ['dua', 3], 4]
Salin dangkal setelah modifikasi: [1, ['dua', 3], 4]
Perhatikan bahwa mengubah daftar bersarang di salin dangkal juga mengganggu daftar asli? Itu karena daftar bersarang masih adalah referensi ke objek yang sama di memori.
Salin Dalam pada Daftar Python
Salin dalam, di sisi lain, membuat daftar baru dan secara rekursif menambahkan salinan dari objek bersarang. Ini seperti menulis ulang seluruh daftar belanja Anda oleh tangan – semua adalah baru dan independen.
Berikut ini bagaimana membuat salin dalam:
import copy
original_list = [1, [2, 3], 4]
deep_copy = copy.deepcopy(original_list)
print("Daftar asli:", original_list)
print("Salin dalam:", deep_copy)
deep_copy[1][0] = 'dua'
print("Daftar asli setelah modifikasi:", original_list)
print("Salin dalam setelah modifikasi:", deep_copy)
Output:
Daftar asli: [1, [2, 3], 4]
Salin dalam: [1, [2, 3], 4]
Daftar asli setelah modifikasi: [1, [2, 3], 4]
Salin dalam setelah modifikasi: [1, ['dua', 3], 4]
Kali ini, mengubah salin dalam tidak mengganggu daftar asli. Itu benar-benar independen!
Menyalin Daftar Menggunakan Notasi Slice
Sekarang, mari kita lihat beberapa cara lain menyalin daftar. Salah satu metode termudah adalah menggunakan notasi slice. Ini seperti mengatakan, "Saya ingin salin dari seluruh daftar dari awal sampai akhir."
original_list = [1, 2, 3, 4, 5]
slice_copy = original_list[:]
print("Daftar asli:", original_list)
print("Salin slice:", slice_copy)
slice_copy.append(6)
print("Daftar asli setelah modifikasi:", original_list)
print("Salin slice setelah modifikasi:", slice_copy)
Output:
Daftar asli: [1, 2, 3, 4, 5]
Salin slice: [1, 2, 3, 4, 5]
Daftar asli setelah modifikasi: [1, 2, 3, 4, 5]
Salin slice setelah modifikasi: [1, 2, 3, 4, 5, 6]
Metode ini membuat salin dangkal dari daftar, yang biasanya cukup bagi daftar dari objek immutable seperti angka dan string.
Menyalin Daftar Menggunakan Fungsi list()
Cara lain untuk membuat salin adalah dengan menggunakan fungsi list()
. Ini seperti memberitahu Python, "Buatlah saya daftar baru yang terlihat seperti ini."
original_list = [1, 2, 3, 4, 5]
list_copy = list(original_list)
print("Daftar asli:", original_list)
print("Salin list:", list_copy)
list_copy.append(6)
print("Daftar asli setelah modifikasi:", original_list)
print("Salin list setelah modifikasi:", list_copy)
Output:
Daftar asli: [1, 2, 3, 4, 5]
Salin list: [1, 2, 3, 4, 5]
Daftar asli setelah modifikasi: [1, 2, 3, 4, 5]
Salin list setelah modifikasi: [1, 2, 3, 4, 5, 6]
Metode ini juga membuat salin dangkal dari daftar.
Menyalin Daftar Menggunakan Metode copy()
Terakhir tapi tidak terkecil, kita memiliki metode copy()
, yang adalah metode bawaan untuk daftar. Ini seperti daftar tersebut mengatakan, "Disini, ambil salinan dari saya!"
original_list = [1, 2, 3, 4, 5]
copy_method = original_list.copy()
print("Daftar asli:", original_list)
print("Salin metode:", copy_method)
copy_method.append(6)
print("Daftar asli setelah modifikasi:", original_list)
print("Salin metode setelah modifikasi:", copy_method)
Output:
Daftar asli: [1, 2, 3, 4, 5]
Salin metode: [1, 2, 3, 4, 5]
Daftar asli setelah modifikasi: [1, 2, 3, 4, 5]
Salin metode setelah modifikasi: [1, 2, 3, 4, 5, 6]
Metode ini juga membuat salin dangkal dari daftar.
Sekarang, mari kita ringkankan semua metode ini dalam tabel yang praktis:
Metode | Sintaks | jenis Salin | Catatan |
---|---|---|---|
Penetapan | new_list = original_list |
Referensi | Bukan salin yang asli |
Salin Dangkal | copy.copy(original_list) |
Dangkal | Daftar baru, referensi objek sama |
Salin Dalam | copy.deepcopy(original_list) |
Dalam | Daftar baru, referensi objek baru |
Notasi Slice | original_list[:] |
Dangkal | Mudah dan dapat dibaca |
Fungsi list() | list(original_list) |
Dangkal | Inten yang jelas |
Metode copy() | original_list.copy() |
Dangkal | Metode bawaan daftar |
Ingat, memilih metode salin yang benar tergantung pada kebutuhan Anda. Jika Anda menjalani daftar sederhana dari objek immutable, salin dangkal biasanya cukup. Tetapi jika Anda memiliki daftar bersarang atau objek yang dapat diubah, Anda mungkin perlu salin dalam untuk memastikan kebebasan penuh.
Dan itu adalah semua! Anda sekarang memiliki pengetahuan untuk menyalin daftar seperti profesional. Selanjutnya Anda perlu membagikan daftar belanja Anda, Anda akan tahu persis cara membuat salin tanpa risiko penambahan yang tak terduga. Happy coding, dan semoga daftar Anda selalu tersalin dengan sempurna!
Credits: Image by storyset