Mengubah Isi List
Delapan perintah yang menutupi hampir semua kebutuhan sehari-hari, plus satu perbedaan halus yang sering menjebak.
Intisari
- Menambah:
append()satu item di akhir Β·insert()di posisi tertentu Β·extend()menyambung list lain. - Membuang:
remove(nilai)berdasar isinya Β·pop(indeks)berdasar posisinya Β·clear()mengosongkan. pop()mengembalikan item yang dibuang βremove()tidak.list.sort()mengubah list aslinya.sorted(list)membuat list baru dan meninggalkan aslinya utuh.- Hampir semua metode ini mengembalikan
None.data = data.append(x)adalah kesalahan klasik.
Menambah
tugas = ["belajar"]
tugas.append("olahraga") # tambah satu di akhir
tugas.insert(0, "sarapan") # sisipkan di posisi 0
tugas.extend(["tidur", "makan"]) # sambung beberapa sekaligus
print(tugas)
# ['sarapan', 'belajar', 'olahraga', 'tidur', 'makan']
append versus extend:
a = [1, 2]
a.append([3, 4]) # [1, 2, [3, 4]] β list masuk sebagai SATU item
b = [1, 2]
b.extend([3, 4]) # [1, 2, 3, 4] β isinya yang disambung
Membuang
buah = ["apel", "jeruk", "mangga", "jeruk"]
buah.remove("jeruk") # buang yang PERTAMA cocok β ['apel', 'mangga', 'jeruk']
terakhir = buah.pop() # buang item terakhir DAN kembalikan isinya
pertama = buah.pop(0) # buang berdasarkan posisi
buah.clear() # kosongkan seluruhnya
| Perintah | Dasarnya | Mengembalikan nilai? |
|---|---|---|
remove(x) | Isinya | Tidak |
pop(i) | Posisinya | Ya β item yang dibuang |
pop() | Item terakhir | Ya |
clear() | Semuanya | Tidak |
remove() pada isi yang tidak ada akan menghentikan program:
buah.remove("durian")
# ValueError: list.remove(x): x not in list
# Cek dulu:
if "durian" in buah:
buah.remove("durian")
Mengurutkan
nilai = [80, 95, 67, 88]
nilai.sort() # UBAH list aslinya β [67, 80, 88, 95]
nilai.sort(reverse=True) # dari besar ke kecil β [95, 88, 80, 67]
nilai.reverse() # balik urutan apa adanya
Kalau kamu tidak ingin list aslinya berubah, pakai sorted():
asli = [3, 1, 2]
baru = sorted(asli)
print(asli) # [3, 1, 2] β utuh
print(baru) # [1, 2, 3]
Kesalahan paling sering: menampung hasil metode list
tugas = ["a", "b"]
tugas = tugas.append("c") # β SALAH
print(tugas) # None
append() mengubah list di tempat dan mengembalikan None. Dengan menugaskannya
kembali, kamu menimpa listmu dengan None dan kehilangan semua datanya. Yang benar:
tugas.append("c") # cukup begini, tanpa "tugas ="
Aturan umumnya: append, insert, extend, remove, sort, reverse, dan clear semuanya mengembalikan None. Yang menghasilkan nilai baru hanya pop(), sorted(), dan copy().
Jangan membuang item sambil menyusuri
angka = [1, 2, 3, 4, 5, 6]
for n in angka: # β BERMASALAH
if n % 2 == 0:
angka.remove(n)
print(angka) # [1, 3, 5] β kebetulan benar, sering tidak
Menghapus item menggeser posisi item lainnya, sementara perulangan tetap melanjutkan hitungannya β akibatnya ada item yang terlewat. Buat list baru saja:
ganjil = []
for n in angka:
if n % 2 != 0:
ganjil.append(n)
# Atau satu baris β bentuk ringkas yang sangat khas Python:
ganjil = [n for n in angka if n % 2 != 0]
Bentuk satu baris itu namanya list comprehension. Dibaca:
βambil n untuk setiap n di angka, kalau n ganjilβ.
Belum wajib kamu kuasai sekarang β tapi kamu akan sering melihatnya, jadi kenali bentuknya.
Ringkasan
| Ingin | Tulis |
|---|---|
| Tambah satu item | data.append(x) |
| Tambah beberapa item | data.extend([x, y]) |
| Sisipkan di posisi | data.insert(0, x) |
| Buang berdasar isi | data.remove(x) |
| Buang berdasar posisi | data.pop(0) |
| Urutkan di tempat | data.sort() |
| Urutkan tanpa mengubah asli | sorted(data) |
| Salin | data.copy() |
Latihan: buat aplikasi daftar tugas di terminal. Menu: tambah tugas, hapus tugas berdasar nomor,
tampilkan daftar bernomor, dan keluar. Pakai while True + break dari Fase 3.
Rangkuman ini sengaja dipangkas ke bagian yang dipakai di roadmap. Buka sumber aslinya saat kamu butuh detail lengkap atau referensi parameter.