0Pricing
Python Academy · Pelajaran

Expression Generator

Buat sequence malas dengan generator expression agar penggunaan memori lebih efisien.

Expression Generator adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 3 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 Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Pendahuluan

Ekspresi generator adalah pemahaman malas — menghasilkan nilai satu per satu tanpa membuat daftar di memori.

Sintaks Ekspresi Generator

(expression for item in iterable) menggunakan tanda kurung. Ini mengembalikan objek generator, BUKAN daftar.
gen = (x**2 for x in range(5))
print(gen)  # generator object
print(next(gen))  # 0
print(next(gen))  # 1

Efisiensi Memori

Generator hanya menyimpan satu nilai pada satu waktu. sum(x**2 for x in range(10**7)) menggunakan memori O(1), berbeda dengan daftar.
total = sum(x**2 for x in range(100))
print(total)

Mengonsumsi Generator

Generator hanya dapat dikonsumsi sekali. Setelah habis, StopIteration akan dimunculkan dan tidak ada nilai yang tersisa.
gen = (x for x in range(3))
for val in gen:
    print(val)
# gen is now exhausted

Generator sebagai Argumen Fungsi

Jika generator adalah satu-satunya argumen, Anda dapat menghilangkan tanda kurung tambahan: sum(x**2 for x in range(10)).
print(sum(x**2 for x in range(10)))
print(max(len(w) for w in ['cat', 'elephant', 'ant']))

Merangkai Generator

Anda dapat merangkai generator secara malas: evens = (x for x in range(100) if x%2==0); big = (x for x in evens if x>50).
evens = (x for x in range(100) if x % 2 == 0)
big_evens = (x for x in evens if x > 50)
print(list(big_evens))

Mengonversi menjadi List/Tuple

list(gen) atau tuple(gen) mewujudkan semua nilai. Lakukan ini saat Anda memerlukan akses acak atau beberapa lintasan.
gen = (x**2 for x in range(5))
print(list(gen))

Ekspresi Generator vs Pemahaman Daftar

Gunakan generator jika Anda hanya melakukan iterasi sekali atau kumpulan datanya besar. Gunakan list jika memerlukan len(), pengindeksan, atau beberapa lintasan.
import sys
lst = [x**2 for x in range(1000)]
gen = (x**2 for x in range(1000))
print(sys.getsizeof(lst), sys.getsizeof(gen))

Generator Tak Terbatas

itertools.count(0) adalah penghitung tak terbatas. Pasangkan dengan islice untuk mengambil hanya nilai yang diperlukan.
import itertools
first10 = list(itertools.islice(itertools.count(0), 10))
print(first10)

any() dan all() dengan Generator

any(x>5 for x in lst) berhenti lebih awal — berhenti pada True pertama. all() berhenti pada False pertama. Sangat efisien.
nums = [1, 3, 7, 2]
print(any(x > 5 for x in nums))
print(all(x > 0 for x in nums))

Alur Pemrosesan

Rangkai transformasi secara malas: data → filter → transformasi → agregasi. Setiap langkah adalah generator; tidak ada yang dijalankan sampai diperlukan.
data = range(1000)
filtered = (x for x in data if x % 7 == 0)
transformed = (x * 2 for x in filtered)
print(sum(transformed))

Pemeriksaan Singkat

Apa keunggulan memori utama ekspresi generator dibandingkan pemahaman daftar?

Ringkasan

Ekspresi generator: (expr for x in it). Evaluasi malas — memori O(1). Hanya dapat dikonsumsi sekali. Gunakan dengan sum/any/all/max. Konversikan menjadi list jika memerlukan beberapa lintasan.

Lanjutkan

Bagus sekali! Lanjutkan ke pelajaran berikutnya untuk memperdalam keterampilan Anda.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Expression Generator” gratis?

Ya — teks lengkap “Expression Generator” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Expression Generator”?

Buat sequence malas dengan generator expression agar penggunaan memori lebih efisien. Kamu berlatih Python Academy 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 Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy 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 3 dari 4.

Berapa lama pelajaran “Expression Generator” 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 Python Academy ini?

Ya. Setiap pelajaran Python Academy 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

  1. List Comprehension
  2. Set dan Dict Comprehension
  3. Expression Generator
  4. Kata Kunci yield
← Kembali ke Python Academy