Koleksi Data · Pelajaran 4 dari 11
List lanjutan: slicing dan list comprehension
9 menit baca · BelajarCode
Slicing dengan langkah
Bentuk lengkap slicing adalah daftar[awal:akhir:langkah].
1angka = [10, 20, 30, 40, 50, 60, 70, 80]2print(angka[1:6:2])3print(angka[::3])4print(angka[::-1])[20, 40, 60] [10, 40, 70] [80, 70, 60, 50, 40, 30, 20, 10]
[::-1] adalah cara cepat membalik list.
Menyalin atau menunjuk?
Penugasan b = a tidak menyalin list. Kedua nama menunjuk list yang sama.
1a = [1, 2, 3]2b = a3c = a.copy()4b.append(4)5print(a)6print(c)[1, 2, 3, 4] [1, 2, 3]
Mengubah b ikut mengubah a, sedangkan c adalah salinan terpisah.
List comprehension
List comprehension membuat list baru dari list lain dalam satu baris.
1nilai = [72, 85, 64, 91, 78, 55]2kuadrat = [n * n for n in range(1, 6)]3tuntas = [n for n in nilai if n >= 75]4predikat = ["Tuntas" if n >= 75 else "Remedial" for n in nilai]5print(kuadrat)6print(tuntas)7print(predikat)[1, 4, 9, 16, 25] [85, 91, 78] ['Remedial', 'Tuntas', 'Remedial', 'Tuntas', 'Tuntas', 'Remedial']
enumerate dan zip
1nama = ["Andi", "Bela", "Citra"]2nilai = [88, 92, 79]3for i, n in enumerate(nama, start=1):4 print(i, n)5for n, v in zip(nama, nilai):6 print(f"{n}: {v}")1 Andi 2 Bela 3 Citra Andi: 88 Bela: 92 Citra: 79
enumeratememberi nomor urut sekaligus isinya.zipmemasangkan isi beberapa list berdasarkan posisinya.
List di dalam list
List bisa berisi list lain, cocok untuk data berbentuk tabel atau matriks.
1matriks = [2 [1, 2, 3],3 [4, 5, 6],4]5print(matriks[1][2])6transpos = [[baris[k] for baris in matriks] for k in range(3)]7print(transpos)6 [[1, 4], [2, 5], [3, 6]]
Mengurutkan dengan kunci
1kata = ["semangka", "apel", "jeruk", "kiwi"]2print(sorted(kata))3print(sorted(kata, key=len))4print(sorted(kata, key=len, reverse=True))['apel', 'jeruk', 'kiwi', 'semangka'] ['apel', 'kiwi', 'jeruk', 'semangka'] ['semangka', 'jeruk', 'apel', 'kiwi']
Parameter key menentukan apa yang dibandingkan. Dengan key=len, kata diurutkan berdasarkan panjangnya.
Cek pemahaman
Apa hasil [x * 2 for x in range(5) if x % 2 == 1]?
Latihan
Nama berinisial
Dari daftar ["andi pratama", "bela", "citra dewi lestari"], buat list baru berisi nama dengan huruf awal kapital, lalu list kedua berisi inisialnya, keduanya dengan list comprehension.
Pembahasan
1nama = ["andi pratama", "bela", "citra dewi lestari"]2rapi = [n.title() for n in nama]3inisial = ["".join(kata[0] for kata in n.split()) for n in rapi]4print(rapi)5print(inisial)['Andi Pratama', 'Bela', 'Citra Dewi Lestari'] ['AP', 'B', 'CDL']
"".join(...) menggabungkan huruf-huruf awal tanpa pemisah.
Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler Python online.