24. List methods
Kamu sudah membangun list secara manual dan menelusurinya dengan
for dan enumerate. List Python juga dilengkapi
method bawaan — function yang melekat pada list dan
melakukan pekerjaan umum untukmu: mengurutkan, membalik, menyalin,
mencari, menghitung. Pelajari ini dan kamu jarang perlu menulis loop
sendiri.
Bab ini menggunakan list dari Bab 22.
Mengurutkan list:
.sort() dan sorted()
.sort() menyusun ulang list di tempat —
mengubah yang asli.
scores = [30, 12, 7, 24]
scores.sort()
print(scores) # [7, 12, 24, 30]Ia juga mengurutkan teks secara alfabet:
names = ["Cara", "Ada", "Ben"]
names.sort()
print(names) # ['Ada', 'Ben', 'Cara']sorted(lst) melakukan hal yang sama tapi
mengembalikan list baru, membiarkan yang asli tidak
berubah:
scores = [30, 12, 7, 24]
ascending = sorted(scores)
print(ascending) # [7, 12, 24, 30]
print(scores) # [30, 12, 7, 24] (unchanged)Mengurutkan dengan caramu sendiri
Berikan function key untuk mengurutkan berdasarkan nilai
yang dihitung, atau reverse=True untuk urutan menurun:
scores = [30, 12, 7, 24]
scores.sort(reverse=True)
print(scores) # [30, 24, 12, 7]words = ["banana", "fig", "apple", "kiwi"]
words.sort(key=len) # sort by string length
print(words) # ['fig', 'kiwi', 'apple', 'banana']Buka exercises/24/01-sort.py. Sebuah list angka sudah
disediakan. Urutkan secara menaik, cetak, lalu urutkan secara menurun
dan cetak lagi.
Membalik list:
.reverse()
.reverse() membalik list di tempat:
items = ["a", "b", "c"]
items.reverse()
print(items) # ['c', 'b', 'a']Untuk mendapat salinan yang dibalik tanpa mengubah yang asli, gunakan
slice items[::-1] atau
list(reversed(items)):
items = ["a", "b", "c"]
flipped = items[::-1]
print(flipped) # ['c', 'b', 'a']
print(items) # ['a', 'b', 'c'] (unchanged)Menggabungkan list menjadi teks
", ".join(lst) menyatukan setiap item menjadi satu
string, dengan pemisah di antara masing-masing. Item harus berupa
string.
fruits = ["apple", "banana", "cherry"]
print(", ".join(fruits)) # apple, banana, cherry
print(" - ".join(fruits)) # apple - banana - cherry
print("".join(fruits)) # applebananacherryUntuk list angka, konversi terlebih dahulu:
scores = [7, 12, 24, 30]
print(" ".join(str(n) for n in scores)) # 7 12 24 30Menyalin list: .copy()
.copy() mengembalikan salinan dangkal — list baru dengan
item yang sama:
original = [1, 2, 3]
copy = original.copy()
copy[0] = 99
print(original) # [1, 2, 3] (unchanged)
print(copy) # [99, 2, 3]Tanpa .copy(), menugaskan list ke variable lain
memberikan referensi kedua ke list yang sama (dibahas di Bab 22).
Mencari: .index() dan
.count()
.index(value) mengembalikan posisi kemunculan
pertama:
fruits = ["apple", "banana", "cherry", "banana"]
print(fruits.index("banana")) # 1Ia memunculkan ValueError jika nilai tidak ada di list.
Periksa dengan in terlebih dahulu jika kamu tidak
yakin:
if "grape" in fruits:
print(fruits.index("grape"))
else:
print("not found").count(value) mengembalikan berapa kali sebuah nilai
muncul:
print(fruits.count("banana")) # 2
print(fruits.count("grape")) # 0List comprehension
Sebuah list comprehension membangun list baru dari
ekspresi yang diterapkan pada setiap item. Sintaksnya adalah
[expression for item in iterable]:
nums = [1, 2, 3, 4, 5]
doubled = [x * 2 for x in nums]
print(doubled) # [2, 4, 6, 8, 10]Kamu bisa menambahkan kondisi untuk memfilter item:
evens = [x for x in nums if x % 2 == 0]
print(evens) # [2, 4]Ini cara kompak untuk mengungkapkan apa yang seharusnya berupa loop
dengan .append. Kamu tidak perlu segera menggunakan
comprehension; bentuk loop sama-sama benar. Gunakan mana yang menurutmu
lebih jelas.
Pekerjaan Rumah
File pekerjaan rumah ada di exercises/24/homework/.
Soal 1 — Baris belanjaan
Buka exercises/24/homework/01-shopping-line.py. Sebuah
list nama item sudah disediakan. Cetak dalam satu baris dipisahkan koma,
menggunakan join.
Soal 2 — Tinggi ke rendah
Buka exercises/24/homework/02-high-to-low.py. Sebuah
list angka sudah disediakan. Urutkan dari tertinggi ke terendah, lalu
cetak dengan join.
Soal 3 — Leaderboard
Buka exercises/24/homework/03-leaderboard.py. Sebuah
list nama player yang acak sudah disediakan. Urutkan secara alfabet dan
cetak leaderboard bernomor, satu per baris (1. Ada,
2. Ben, ...).
Tantangan — Tiga teratas
Buka exercises/24/homework/04-top-three.py. Sebuah list
skor sudah disediakan. Urutkan dari tertinggi pertama, lalu cetak hanya
tiga teratas dalam satu baris dipisahkan spasi. Gunakan
.sort() dan join, ditambah slice untuk
mengambil hanya tiga pertama.
Bingung atau sudah selesai? Buka halaman solusi pekerjaan rumah.