Kursus Python / Mengubah, mengurutkan, dan menyalin list

List menyimpan unsur secara berurutan dan memungkinkan isinya diubah. Bedakan operasi yang mengubah list asli dari fungsi yang menghasilkan list baru, terutama saat mengurutkan atau menyalin data.

Pilih operasi berdasarkan tujuannya

Buat list dengan tanda kurung siku dan akses unsur pertama melalui indeks 0. List dapat memuat nilai berulang dan beberapa tipe data, tetapi nilai yang akan dijumlahkan sebaiknya memiliki makna serta satuan yang konsisten. Penugasan ke satu indeks mengganti unsur pada posisi itu.

Tujuan Kode Perilaku penting
Menambah satu unsur items.append(value) Argumen berupa list menjadi satu unsur bersarang
Menambah beberapa unsur items.extend(values) Menambahkan setiap unsur dari objek yang dapat diiterasi
Menghapus menurut posisi items.pop(index) Mengembalikan unsur yang dihapus
Menghapus menurut nilai items.remove(value) Menghapus kecocokan pertama; gagal jika tidak ditemukan

Tanpa argumen indeks, pop() menghapus unsur terakhir. append([1, 2]) menambahkan satu list sebagai unsur, sedangkan extend([1, 2]) menambahkan angka 1 dan 2 sebagai dua unsur. Panduan struktur data Python merinci metode-metode ini.

Jalankan perubahan list dan pengurutan

Simpan kode lengkap berikut sebagai lists.py dengan encoding UTF-8. Gunakan Python 3.12 atau lebih baru; tidak perlu paket tambahan. Buka terminal pada folder latihan dan jalankan python lists.py melalui lingkungan proyek. Di macOS atau Ubuntu tanpa lingkungan virtual, nama perintah dapat berupa python3.

amounts = [3500, 8000, 2500]
amounts.append(1000)
amounts[0] = 4000
removed = amounts.pop()
print(amounts, removed)
print(sorted(amounts))
print(amounts)
amounts.sort()
print(amounts)

Keluaran yang diharapkan:

[4000, 8000, 2500] 1000
[2500, 4000, 8000]
[4000, 8000, 2500]
[2500, 4000, 8000]

List awal berisi tiga jumlah. append(1000) menambahkan unsur keempat, lalu penugasan indeks mengganti 3500 menjadi 4000. pop() mengambil kembali unsur terakhir, yaitu 1000, dan menyimpannya pada removed. Karena itu, baris keluaran pertama menampilkan tiga unsur yang tersisa serta nilai yang dihapus.

Baris keluaran kedua adalah hasil baru dari sorted(). Baris ketiga menunjukkan bahwa urutan amounts belum berubah. Setelah amounts.sort(), baris terakhir menampilkan list asli yang kini sudah terurut.

Bedakan pengurutan, perubahan asli, dan salinan

Operasi Nilai yang dikembalikan Efek pada sumber
items.sort() None Urutan list asli berubah
sorted(items) List baru Urutan asli tetap

Jangan menulis items = items.sort() dengan harapan menerima hasil terurut: nama items justru akan merujuk ke None. Gunakan items.sort() sebagai instruksi tersendiri, atau simpan sorted(items) pada nama baru jika urutan awal perlu dipertahankan. Panduan pengurutan Python membandingkan kedua pilihan tersebut.

Penugasan other = amounts tidak menyalin list; kedua nama merujuk ke objek yang sama. Perubahan melalui salah satu nama terlihat melalui nama lainnya. Sebaliknya, copied = amounts[:] atau amounts.copy() membuat list luar baru. Namun, itu salinan dangkal: jika unsurnya berupa list lain, objek di dalamnya masih dibagi bersama.

Misalnya, untuk rows = [[1], [2]], salinan copied = rows[:] memiliki wadah luar berbeda. Menambahkan unsur ke copied tidak menambah panjang rows, tetapi mengubah copied[0] juga memengaruhi list dalam yang terlihat melalui rows[0]. Baik slicing maupun sorted() bukan operasi penyalinan mendalam. Dokumentasi shallow copy dan deep copy menjelaskan tingkat penyalinan tersebut.

Periksa list kosong dan perubahan saat iterasi

Membaca indeks 0 atau memanggil pop() pada list kosong menghasilkan IndexError. remove() menghasilkan ValueError jika nilai tidak ada. Putuskan apakah list kosong sah untuk tugas Anda atau harus ditolak sebagai pelanggaran persyaratan, kemudian periksa sebelum mengambil unsur.

Menghapus unsur dari list yang sedang diiterasi dapat melewatkan unsur lain karena posisi berubah. Misalnya, menghapus setiap angka 1 dengan loop langsung pada [1, 1, 2] dapat menyisakan satu angka 1. Gunakan salinan untuk iterasi jika sumber tetap perlu diubah, atau bentuk list baru berdasarkan kondisi yang dipilih.

  1. Jalankan contoh asli dan cocokkan keempat baris keluaran.
  2. Ubah hanya baris awal menjadi amounts = [3500, 8000, 2500, 0]. Unsur 1000 yang ditambahkan tetap diambil oleh pop(), sedangkan 0 bertahan dan berada di depan setelah diurutkan. Jumlah akhir tetap 14500, tetapi panjang list berubah.
  3. Kembalikan baris awal ke tiga nilai semula dan jalankan kembali. Pastikan struktur dan urutannya kembali sama dengan contoh, bukan hanya jumlahnya.

List dapat menyimpan angka dan teks bersama, tetapi mencampurnya tidak menjamin unsur dapat dibandingkan untuk pengurutan. Jika data gagal diurutkan, periksa tipe dan makna nilai sebelum memaksa konversi, terutama untuk jumlah yang berasal dari teks masukan.