Lists di Python — Terjemahan, Penjelasan & Cheatsheet
Materi ini membahas konsep sequence, pembuatan list, indexing & slicing, metode dasar, nesting, hingga pengenalan list comprehensions.
Pendahuluan: Lists di Python
Sebelumnya saat membahas string kita memperkenalkan konsep sequence (urutan) di Python. List dapat dianggap sebagai bentuk sequence yang paling umum di Python. Berbeda dengan string, list itu mutable (bisa diubah), artinya elemen di dalam list dapat diganti!
Di bagian ini kita akan mempelajari:
- Membuat list
- Indexing dan Slicing pada list
- Metode-metode dasar list
- Nesting list (list di dalam list)
- Pengenalan List Comprehensions
List dibuat dengan tanda kurung siku []
dan elemen-elemen dipisahkan oleh koma.
# Menetapkan sebuah list ke variabel bernama my_list
my_list = [1, 2, 3]
Kita baru saja membuat list berisi bilangan bulat (integer), tetapi list sebenarnya dapat menampung berbagai tipe objek yang berbeda. Contohnya:
my_list = ['Sebuah string', 23, 100.232, 'o']
Sama seperti string, fungsi len()
akan memberi tahu berapa banyak item di dalam sequence (urutan) sebuah list.
len(my_list)
Indexing & Slicing
Indexing dan slicing bekerja sama seperti pada string. Mari buat list baru untuk mengingat cara kerjanya:
my_list = ['one', 'two', 'three', 4, 5]
# Ambil elemen pada indeks 0
my_list[0]
# Ambil indeks 1 hingga akhir
my_list[1:]
# Ambil semua elemen HINGGA indeks 3 (tidak termasuk 3)
my_list[:3]
Kita juga bisa menggunakan +
untuk menggabungkan list, seperti pada string.
my_list + ['item baru']
# Reassign
my_list = my_list + ['tambah item baru secara permanen']
my_list
Kita juga dapat menggunakan *
untuk menduplikasi list (mirip string):
# Gandakan isi list
my_list * 2
# Penggandaan lagi tidak permanen terhadap variabel semula
my_list
Metode Dasar List
List di Python fleksibel: tidak punya ukuran tetap dan tidak punya batasan tipe tetap.
# Buat list baru
list1 = [1, 2, 3]
# Tambahkan elemen ke akhir list (permanen)
list1.append('append me!')
# Tampilkan
list1
Gunakan pop
untuk menghapus & mengembalikan item. Default-nya adalah indeks terakhir, tetapi bisa juga menentukan indeks tertentu.
# Pop elemen berindeks 0
list1.pop(0)
# Tampilkan
list1
# Simpan elemen yang dipop; default indeks yang dipop adalah -1 (terakhir)
popped_item = list1.pop()
popped_item
# Tampilkan sisa list
list1
list1[100]
akan memunculkan IndexError
karena tidak ada elemen pada indeks tersebut.Gunakan sort
dan reverse
untuk mengurutkan atau membalik list.
new_list = ['a','e','x','b','c']
# Tampilkan
new_list
# Balik urutan (permanen)
new_list.reverse()
new_list
# Urutkan (huruf: alfabetis, angka: menaik)
new_list.sort()
new_list
Nesting List (List di dalam List)
Python mendukung nesting, yaitu struktur data di dalam struktur data lain (misal list di dalam list).
# Buat beberapa list
lst_1 = [1, 2, 3]
lst_2 = [4, 5, 6]
lst_3 = [7, 8, 9]
buah = ['apel','mangga','jeruk']
sayur = ['bayem','toge','asem']
bumbu = ['sambal','royko','garam']
# Gabungkan menjadi "matrix" (list of lists)
matrix = [lst_1, lst_2, lst_3, buah, bumbu, sayur]
# Tampilkan
matrix
# Akses 2 tingkat
matrix[0] # item pertama (sebuah list)
matrix[0][0] # item pertama dari list pertama
Pengenalan List Comprehensions
List comprehension memudahkan pembuatan list secara ringkas. (Kita akan bahas mendalam di bagian lain.)
# Ambil elemen pertama dari setiap "baris" di matrix
first_col = [row[0] for row in matrix]
first_col
Penjelasan Tambahan & Catatan Penting
- Mutable vs Immutable: List mutable; string & tuple immutable.
append
vs gabung (+
):append(x)
menambah satu elemen (in-place).a + [x]
membuat list baru (butuh reassign).sort()
vssorted()
:sort()
in-place & kembalikanNone
;sorted(a)
kembalikan list baru. Keduanya mendukungkey=
danreverse=True
.- Indeks negatif & slicing:
a[-1]
elemen terakhir,a[::2]
loncat 2,a[::-1]
membalik. - Campur tipe: Boleh, tapi sorting pada tipe tak-kompatibel akan error.
- Duplikasi list bersarang:
grid = [[0]*3]*3
mengacu ke list yang sama (ubah satu baris, semua ikut). Gunakan[[0]*3 for _ in range(3)]
untuk baris independen. - Salin list: Shallow copy pakai
a[:]
ataua.copy()
; deep copy pakaicopy.deepcopy(a)
untuk objek bersarang.
Cheatsheet: Python Lists
Pembuatan & Dasar
a = [] # list kosong
a = [1, 'teks', 3.14, True] # campur tipe
len(a) # jumlah elemen
Akses, Slice, Langkah
a[i] # indeks ke-i (0-based), a[-1] elemen terakhir
a[i:j] # dari i s.d. j-1
a[:j], a[i:], a[:] # variasi slice
a[i:j:k] # langkah k, a[::-1] membalik
Gabung & Duplikasi
a + b # gabung (buat list baru)
a * 3 # duplikasi isi
Mutasi (In-place)
a.append(x) # tambah 1 elemen di akhir
a.extend(iterable) # tambah banyak elemen
a.insert(i, x) # sisip di indeks i
a.remove(x) # hapus elemen pertama yang == x (ValueError jika tak ada)
x = a.pop() # hapus & kembalikan elemen terakhir
x = a.pop(i) # hapus & kembalikan elemen pada indeks i
a.clear() # kosongkan list
a[i] = x # ganti elemen pada indeks i
a[i:j] = [..] # ganti slice
Pencarian & Hitung
a.index(x) # indeks pertama x (ValueError jika tak ada)
a.count(x) # jumlah kemunculan x
x in a # keanggotaan (True/False)
Urut & Balik
a.sort() # urut in-place (mengembalikan None)
a.sort(reverse=True) # urut menurun
a.sort(key=str.lower) # urut dengan kunci
b = sorted(a) # versi terurut baru
b = sorted(a, key=len) # terurut berdasarkan panjang
a.reverse() # balik in-place
b = list(reversed(a)) # versi dibalik baru
Salin
b = a.copy() # shallow copy
b = a[:] # shallow copy (slice)
import copy
b = copy.deepcopy(a) # deep copy
Fungsi Bawaan yang Berguna
min(a), max(a), sum(a) # untuk elemen numerik
list(range(5)) # [0,1,2,3,4]
any(a), all(a) # logika atas nilai boolean
Iterasi & Utilitas
for i, x in enumerate(a): # dapatkan indeks & nilai
...
for x, y in zip(a, b): # iterasi berpasangan
...
List Comprehension (LC)
# Bentuk dasar
b = [expr for x in iterable]
# Dengan kondisi
b = [x for x in a if x % 2 == 0]
# Transformasi
squares = [x*x for x in range(10)]
# Matrix/2D
grid = [[0]*3 for _ in range(3)]
first_col = [row[0] for row in grid]
# Flatten 2D
flat = [x for row in grid for x in row]
Contoh Matrix & Akses Bersarang
matrix = [
[1,2,3],
[4,5,6],
[7,8,9],
]
matrix[0] # [1,2,3]
matrix[0][0] # 1
col0 = [r[0] for r in matrix] # [1,4,7]
0 Comments
Terima kasih atas komentarnya
Emoji