Setelah mampu membuat dan menggabungkan string, kebutuhan berikutnya adalah mengambil bagian dari string: huruf pertama sebuah nama, domain dari alamat email, atau empat digit terakhir sebuah nomor kartu. Python menyediakan dua mekanisme untuk kebutuhan tersebut: indexing untuk mengambil satu karakter dan slicing untuk mengambil rentang karakter. Kedua mekanisme ini juga berlaku pada list dan tuple, jadi menguasainya sekarang akan terbayar di sepanjang Course Python.
Mengakses Karakter dengan Indexing #
Setiap karakter pada string memiliki nomor posisi yang disebut index, dan penghitungan dimulai dari 0, bukan 1. Python juga menyediakan negative index yang berhitung dari belakang string, dengan karakter terakhir bernomor -1. Tabel berikut memetakan kedua jenis index untuk string "Python":
| Karakter | P | y | t | h | o | n |
|---|---|---|---|---|---|---|
| Index positif | 0 | 1 | 2 | 3 | 4 | 5 |
| Index negatif | -6 | -5 | -4 | -3 | -2 | -1 |
Kita mengakses karakter dengan menuliskan nomor index di dalam tanda kurung siku setelah variabel:
kata = "Python"
print(kata[0])
print(kata[1])
print(kata[-1])
print(kata[-2])
print(len(kata))Output yang Dihasilkan:
P
y
n
o
6Mari kita bedah baris-barisnya:
- Baris 3 (
kata[0]): interpreter membaca karakter pada posisi0, yaituP— karakter pertama selalu berindex0. - Baris 4 (
kata[1]): posisi1berisiy; jarak antara posisi dan kenyataan manusia yang mulai menghitung dari satu adalah sumber kebingungan paling umum bagi pemula. - Baris 5-6 (
kata[-1],kata[-2]): negative index berhitung dari belakang;kata[-1]adalah karakter terakhirn,kata[-2]karakter kedua dari belakango. - Baris 7 (
len(kata)): fungsilen()mengembalikan jumlah karakter,6; index sah terbesar dengan demikian adalah5.
Slicing: Mengambil Rentang Karakter #
Indexing hanya menghasilkan satu karakter. Untuk mengambil beberapa karakter sekaligus, kita menggunakan slicing dengan format teks[start:stop]. Ada satu aturan penting yang harus dihafal: index start ikut diambil, sedangkan index stop tidak ikut diambil.
kata = "Python"
print(kata[0:3])
print(kata[2:])
print(kata[:4])
print(kata[:])Output yang Dihasilkan:
Pyt
thon
Pyth
PythonMari kita telaah setiap baris:
- Baris 3 (
kata[0:3]): mengambil index0,1, dan2— berhenti sebelum index3. Hasilnya"Pyt"yang terdiri dari tiga karakter. - Baris 4 (
kata[2:]):stopdikosongkan berarti sampai akhir string; hasilnya"thon"mulai dari index2. - Baris 5 (
kata[:4]):startdikosongkan berarti dari index0; hasilnya"Pyth"sebelum index4. - Baris 6 (
kata[:]): keduanya kosong menghasilkan salinan seluruh string.
Step dan Slicing Terbalik #
Slicing punya bentuk lengkap: teks[start:stop:step]. Nilai step defaultnya 1 (ambil semua karakter berurutan). Nilai 2 berarti lompat satu karakter setiap kali bergerak, dan nilai negatif membuat pembacaan berjalan dari kanan ke kiri:
kota = "Jakarta"
print(kota[0:6:2])
print(kota[::2])
print(kota[::-1])
print(kota[5:1:-2])Output yang Dihasilkan:
Jkr
Jkra
atrakaJ
taPerhatikan perilaku masing-masing:
kota[0:6:2]: bergerak dari index0menuju sebelum index6dengan langkah2, sehingga yang diambil index0,2, dan4— karakterJ,k,r.kota[::2]: seluruh string dengan langkah2; index0,2,4,6menghasilkanJkra.kota[::-1]: langkah-1tanpa batas berarti membaca seluruh string dari belakang — idiom paling ringkas untuk membalik string di Python.kota[5:1:-2]: dengan step negatif,startharus lebih besar daristop; pembacaan mulai index5mundur sampai melewati index2, mengambil index5dan3— karaktertdana.
Index di Luar Jangkauan #
Indexing dan slicing berperilaku sangat berbeda terhadap index yang melebihi panjang string. Indexing menolak keras dengan IndexError, sedangkan slicing diam-diam memotong sebatas yang tersedia:
>>> kata = "Python"
>>> kata[10]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> kata[2:10]
'thon'Ekspresi kata[2:10] tidak error karena aturan slicing berhenti sendiri di karakter terakhir yang ada. Perilaku toleran ini memudahkan kita memotong string tanpa harus menghitung panjangnya terlebih dahulu.
Dengan indexing dan slicing, kita kini bisa membedah string pada tingkat karakter. Selanjutnya kita berkenalan dengan kumpulan method str yang mengubah, membersihkan, dan memeriksa string dalam satu panggilan.