For AI agents: use /llms.txt for the Nakafa content index.
Indexing mengambil satu elemen dari string atau list berdasarkan posisinya. Misalnya, jika huruf = ["a", "b", "c"], maka huruf[1] menghasilkan "b".
Python memulai nomor indeks dari . Elemen pertama memiliki indeks , elemen kedua memiliki indeks , dan seterusnya. Python juga mendukung indeks negatif yang menghitung mundur dari akhir.
Dalam string atau list, setiap karakter atau elemen memiliki dua jenis indeks. Indeks positif dimulai dari di awal, sedangkan indeks negatif dimulai dari di akhir.
Indeks di luar rentang yang valid menghasilkan IndexError. Python memeriksa batas string dan list sebelum mengambil elemennya.
Slicing mengambil beberapa elemen dari string atau list. Kamu menentukan indeks awal, indeks akhir, dan bila perlu jarak antarelemen yang dipilih.
Sintaks [i:j] memakai i sebagai indeks awal dan j sebagai indeks akhir. Elemen pada indeks i masuk ke hasil, sedangkan elemen pada indeks j tidak.
Jika indeks awal lebih besar daripada indeks akhir dan step bernilai positif, slicing menghasilkan string atau list kosong. Step negatif memilih elemen ke arah sebaliknya.
Parameter ketiga dalam [start:stop:step] menentukan jarak antarelemen yang dipilih. Nilai step sebesar 2, misalnya, mengambil satu elemen lalu melewati satu elemen berikutnya.
Step negatif membalik arah pemilihan elemen. Jika step bernilai , Python mengambil semua elemen dari akhir ke awal.
Indeks awal, indeks akhir, dan step menentukan elemen yang masuk ke hasil.
Untuk kasus dengan step positif bawaan, panjang s[i:j] adalah . Bentuk lain dapat mengosongkan batas, memakai indeks negatif, melewati rentang, atau menentukan step berbeda. Python menyesuaikan batas tersebut terhadap panjang data. Jumlah elemen hasil slicing dapat dihitung dengan len(range(*slice(i, j, step).indices(len(s)))).
Saat melakukan slicing, Python menyesuaikan batas yang berada di luar rentang dengan panjang string atau list. Karena itu, s[3:10] tetap valid meskipun indeks akhir melewati panjang s.
Fungsi range() dapat menunjukkan indeks mana saja yang dipilih oleh slicing. Perbandingan ini menjelaskan indeks hasil slicing, bukan cara setiap tipe Python menjalankan operasi tersebut secara internal.
Perbandingan dengan range() menunjukkan bagaimana batas awal, batas akhir, dan step bekerja bersama, terutama ketika step bernilai negatif.
Kamu dapat mengosongkan parameter awal atau akhir untuk mengambil elemen dari awal atau sampai akhir string/list.
Bentuk-bentuk tersebut dapat mengambil bagian tertentu atau elemen dengan selang tetap dari dataset tanpa menulis loop terpisah.
Contoh berikut memakai indexing dan slicing untuk membalik string, memformat nomor telepon, membuat inisial, dan memeriksa palindrom. Contoh ekstensi file menunjukkan alasan memakai Path.suffix ketika panjang ekstensi tidak tetap.
Gunakan indexing untuk mengambil satu elemen pada posisi yang diketahui. Gunakan slicing untuk mengambil beberapa elemen yang berurutan atau berjarak tetap. Bentuk [::-1] membalik urutan elemen. Untuk ekstensi file, jangan mengandalkan jumlah karakter tetap karena panjang ekstensi dapat berbeda. Path.suffix membaca ekstensi sesuai struktur path.
Batas slicing disesuaikan dengan panjang data, sehingga s[10:] pada string yang lebih pendek menghasilkan "". Akses langsung seperti s[10] tetap menghasilkan IndexError. Gunakan slicing hanya jika hasil kosong memang dapat diterima.
Indeks negatif menghitung posisi dari akhir data. Gunakan s[-1] untuk elemen terakhir atau s[-3:] untuk tiga elemen terakhir. Bentuk ini dapat dipakai saat memproses file, parsing teks, atau mengolah dataset yang elemennya perlu dihitung dari akhir.
Diterbitkan: . Diperbarui: .
# Contoh indexing pada string
s = "Hello"
# Mengakses karakter dengan indeks positif
print(s[0]) # Output: 'H'
print(s[4]) # Output: 'o'
# Mengakses karakter dengan indeks negatif
print(s[-1]) # Output: 'o' (karakter terakhir)
print(s[-5]) # Output: 'H' (karakter pertama)
# Mencoba mengakses indeks yang tidak ada
try:
print(s[5])
except IndexError:
print("IndexError: indeks di luar jangkauan")# Contoh slicing pada string
s = "Hello"
# Mengambil indeks 1 sampai sebelum indeks 3
print(s[1:3]) # Output: 'el'
# Mengambil indeks 3 sampai akhir
print(s[3:]) # Output: 'lo'
# Mengambil awal string sampai sebelum indeks 3
print(s[:3]) # Output: 'Hel'
# Menggunakan indeks negatif
print(s[-4:-2]) # Output: 'el'
print(s[-2:-4]) # Output: '' (string kosong)# Contoh slicing dengan step tertentu
s = "Hello World!"
# Mengambil setiap karakter kedua
print(s[::2]) # Output: 'HloWrd'
# Mengambil setiap karakter kedua dari indeks 1
print(s[1::2]) # Output: 'el ol!'
# Membalik string dengan step negatif
print(s[::-1]) # Output: '!dlroW olleH'
# Memilih mundur dari indeks tertentu
print(s[-1:4:-1]) # Output: '!dlroW'# Menghitung panjang hasil slicing
s = "Hello"
# Mengiris s[1:4]
result = s[1:4]
print(f"Hasil: '{result}', Panjang: {len(result)}") # Output: 'ell', 3
# Membuktikan bahwa s[:i] + s[i:] == s
i = 2
left_part = s[:i]
right_part = s[i:]
print(f"'{left_part}' + '{right_part}' = '{left_part + right_part}'")
# Batas di luar rentang akan disesuaikan
print(s[3:10]) # Output: 'lo'
print(s[10:]) # Output: '' (string kosong)# Membandingkan slicing dengan loop
s = "Hello World!"
# s[1:8:2] memilih indeks yang sama dengan loop berikut
result_manual = ""
for index in range(1, 8, 2):
result_manual += s[index]
result_slicing = s[1:8:2]
print(f"Loop manual: '{result_manual}'") # Output: 'el o'
print(f"Hasil slicing: '{result_slicing}'") # Output: 'el o'
print(f"Sama? {result_manual == result_slicing}") # Output: True
# Contoh dengan step negatif
print("\nStep negatif:")
print(f"s[::-2] = '{s[::-2]}'") # Output: '!lo le'
# Loop yang memilih indeks yang sama
result_negative = ""
for index in range(len(s)-1, -1, -2):
result_negative += s[index]
print(f"Manual: '{result_negative}'")# Beberapa bentuk singkat slicing
s = "Hello"
# Mengambil 3 karakter pertama
print(s[:3]) # Output: 'Hel'
# Mengambil karakter dari indeks 3 sampai akhir
print(s[3:]) # Output: 'lo'
# Mengambil semua karakter
print(s[:]) # Output: 'Hello'
# Contoh praktis dengan list
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Mengambil 5 elemen pertama
first_five = numbers[:5]
print(f"Lima pertama: {first_five}")
# Mengambil 5 elemen terakhir
last_five = numbers[-5:]
print(f"Lima terakhir: {last_five}")
# Mengambil elemen tengah setelah melewati 2 elemen di setiap ujung
middle = numbers[2:-2]
print(f"Bagian tengah: {middle}")# Contoh penggunaan indexing dan slicing
# 1. Membalik nama
nama_depan = "Ahmad"
nama_belakang = "Wijaya"
nama_terbalik = (nama_depan + " " + nama_belakang)[::-1]
print(f"Nama terbalik: {nama_terbalik}")
# 2. Mengambil ekstensi file dengan aman
from pathlib import Path
nama_file = "dokumen_penting.pdf"
ekstensi = Path(nama_file).suffix
print(f"Ekstensi: {ekstensi}")
# 3. Memformat nomor telepon
nomor = "081234567890"
formatted = f"{nomor[:4]}-{nomor[4:8]}-{nomor[8:]}"
print(f"Nomor terformat: {formatted}")
# 4. Mengambil inisial nama
nama_lengkap = "Siti Nurhaliza Binti Ahmad"
kata_kata = nama_lengkap.split()
inisial = ""
for kata in kata_kata:
inisial += kata[0]
print(f"Inisial: {inisial}")
# 5. Palindrome checker
def is_palindrome(text):
cleaned = "".join(character for character in text.casefold() if character.isalnum())
return cleaned == cleaned[::-1]
print(f"'katak' palindrome? {is_palindrome('katak')}")
print(f"'kasur rusak' palindrome? {is_palindrome('kasur rusak')}")