List, Tuple, dan Slicing
Kuasai operasi list Python, sintaks slicing, dan sifat tuple yang tidak dapat diubah melalui contoh langsung dari tantangan pemrograman klasik.
List, Tuple, dan Slicing adalah pelajaran DSA Interview Prep gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar DSA Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus DSA Interview Prep mencakup 4 pelajaran total.
Daftar Python: Larik Dinamis
Daftar Python adalah larik dinamis yang dapat menampung apa saja dan bertambah ukurannya secara otomatis. Daftar memiliki urutan, dapat diubah, dan memberi Anda akses seketika O(1) berdasarkan indeks. Kode ini menunjukkan dasar-dasarnya.
nums = [3, 1, 4, 1, 5]
print(nums[0]) # 3
print(nums[-1]) # 5 (last element)
nums.append(9)
print(len(nums)) # 6Operasi Daftar yang Umum
Hafalkan ini: append dan pop di bagian akhir membutuhkan O(1), tetapi insert di bagian awal membutuhkan O(n). Hindari remove dalam perulangan yang ketat—operasi tersebut memindai ulang setiap kali.
stack = []
stack.append(1)
stack.append(2)
stack.append(3)
print(stack.pop()) # 3 O(1)
print(stack) # [1, 2]
# insert at index 0 is O(n)
stack.insert(0, 0)
print(stack) # [0, 1, 2]Penjelasan Sintaksis Pemotongan
Pemotongan ditulis sebagai lst[start:stop:step] dan berhenti tepat sebelum stop. Trik klasiknya: step -1 membalik daftar tanpa mengubahnya. Kode ini membahas setiap bentuknya.
a = [0, 1, 2, 3, 4, 5]
print(a[1:4]) # [1, 2, 3]
print(a[:3]) # [0, 1, 2]
print(a[3:]) # [3, 4, 5]
print(a[::2]) # [0, 2, 4] every other
print(a[::-1]) # [5, 4, 3, 2, 1, 0] reversedPemotongan Membuat Salinan Dangkal
Hal yang sering mengecoh: pemotongan selalu membuat daftar baru, sehingga pengeditan pada hasil pemotongan tidak memengaruhi daftar asli. Namun, salinan tersebut bersifat dangkal, jadi daftar bersarang di dalamnya masih digunakan bersama. Berhati-hatilah.
original = [1, 2, 3]
copy = original[:] # shallow copy
copy[0] = 99
print(original) # [1, 2, 3] unchanged
# Nested list pitfall
nested = [[1, 2], [3, 4]]
shallow = nested[:]
shallow[0][0] = 99
print(nested) # [[99, 2], [3, 4]] changed!Tupel: Urutan yang Tidak Dapat Diubah
Tupel menggunakan tanda kurung dan tidak dapat diubah setelah dibuat. Karena dapat di-hash, tupel dapat menjadi kunci kamus atau anggota himpunan—sangat cocok untuk pasangan (baris, kolom) dalam soal kisi.
point = (3, 7)
print(point[0]) # 3
# Use as dict key
grid = {}
grid[(0, 0)] = 'start'
grid[(2, 3)] = 'end'
print(grid[(0, 0)]) # start
# Unpacking
x, y = point
print(x, y) # 3 7Kapan Menggunakan Tupel atau Daftar
Pilih tupel jika data tidak boleh berubah, dan pilih daftar jika data boleh berubah. Tupel juga menggunakan sedikit lebih sedikit memori, yang manfaatnya terasa di dalam heap besar pada Dijkstra.
import sys
a_list = [1, 2, 3, 4, 5]
a_tuple = (1, 2, 3, 4, 5)
print(sys.getsizeof(a_list)) # e.g. 104 bytes
print(sys.getsizeof(a_tuple)) # e.g. 80 bytes
# Tuple returned from function
def min_max(nums):
return min(nums), max(nums)
lo, hi = min_max([3, 1, 4, 1, 5])
print(lo, hi) # 1 5Kesalahan Satu Posisi pada Pemotongan
Kutu off-by-one adalah jebakan terbesar dalam soal larik. Ingat, lst[i:j] menghasilkan tepat j-i item. Untuk membagi di tengah, bagian kiri adalah lst[:mid] dan bagian kanan adalah lst[mid:].
lst = [1, 2, 3, 4, 5, 6]
mid = len(lst) // 2 # 3
left = lst[:mid] # [1, 2, 3]
right = lst[mid:] # [4, 5, 6]
print(left, right)
# How many elements?
print(len(lst[2:5])) # 3 (indices 2,3,4)Indeks Negatif dalam Wawancara
Python memiliki indeks negatif: lst[-1] adalah item terakhir, sedangkan lst[-2] adalah item sebelumnya. Utamakan lst[-1] daripada lst[len(lst)-1]—pewawancara akan memperhatikan versi yang lebih rapi.
s = 'abcde'
print(s[-1]) # 'e'
print(s[-3:]) # 'cde'
print(s[:-2]) # 'abc' (all except last 2)
nums = [10, 20, 30, 40]
print(nums[-2]) # 30
nums[-1] = 99
print(nums) # [10, 20, 30, 99]Pengurutan dan Perbandingan Daftar
Pengurutan Python menggunakan Timsort (O(n log n), stabil). lst.sort() mengubah daftar secara langsung; sorted(lst) mengembalikan daftar baru. Gunakan opsi key untuk urutan khusus. Lihat kodenya.
words = ['banana', 'fig', 'apple', 'kiwi']
words.sort(key=len)
print(words) # ['fig', 'kiwi', 'apple', 'banana']
nums = [3, 1, 4, 1, 5]
print(sorted(nums, reverse=True)) # [5, 4, 3, 1, 1]
print(nums) # unchanged: [3, 1, 4, 1, 5]Mengubah Daftar Saat Iterasi
Jebakan klasik: jangan pernah menambahkan atau menghapus item saat melakukan perulangan pada daftar—Anda dapat melewati elemen atau menyebabkan program gagal. Sebagai gantinya, buat daftar baru dengan pemahaman daftar.
# WRONG — skips elements
nums = [1, 2, 3, 4, 5]
for n in nums:
if n % 2 == 0:
nums.remove(n) # skips 4!
print(nums) # [1, 3, 5]... but 4 got skipped? Actually removes 2,4
# CORRECT — build new list
nums = [1, 2, 3, 4, 5]
nums = [n for n in nums if n % 2 != 0]
print(nums) # [1, 3, 5]Pembongkaran Tupel dalam Perulangan
Pembongkaran tupel membuat perulangan tetap rapi: enumerate menghasilkan (index, value), sedangkan zip menelusuri dua daftar secara bersamaan. Sintaks *rest mengambil bagian akhir ke dalam variabelnya sendiri. Lihat kodenya.
nums = [10, 20, 30]
for i, v in enumerate(nums):
print(i, v)
# 0 10 / 1 20 / 2 30
a = [1, 2, 3]
b = ['x', 'y', 'z']
for x, y in zip(a, b):
print(x, y)
first, *rest = [1, 2, 3, 4]
print(first, rest) # 1 [2, 3, 4]Pemeriksaan Singkat
Pemeriksaan singkat—tunjukkan pemahaman Anda tentang daftar, tupel, dan pemotongan Python. Anda pasti bisa. 💪
Rangkuman Pelajaran
Rangkuman: daftar adalah larik dinamis dengan append O(1), pemotongan selalu mengembalikan salinan baru, dan tupel tidak dapat diubah serta dapat di-hash. Berikutnya: kamus dan himpunan.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “List, Tuple, dan Slicing” gratis?
Ya — teks lengkap “List, Tuple, dan Slicing” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus DSA Interview Prep, upgrade ke CoddyKit PRO. Kursus DSA Interview Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “List, Tuple, dan Slicing”?
Kuasai operasi list Python, sintaks slicing, dan sifat tuple yang tidak dapat diubah melalui contoh langsung dari tantangan pemrograman klasik. Kamu berlatih DSA Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai DSA Interview Prep?
Tidak diperlukan pengalaman sebelumnya. DSA Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “List, Tuple, dan Slicing” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran DSA Interview Prep ini?
Ya. Setiap pelajaran DSA Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- List, Tuple, dan Slicing
- Dictionary dan Set dalam Python
- Comprehension dan Fungsi Bawaan
- Fungsi, Closure, dan Lambda