0Pricing
Python Academy · Pelajaran

Ekspresi Generator

Tulis pipeline malas yang ringkas

Ekspresi 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.

Dari Komprehensi Daftar ke Ekspresi Generator

Ekspresi generator terlihat seperti komprehensi daftar, tetapi menggunakan tanda kurung, bukan tanda kurung siku. Ekspresi ini menghasilkan nilai secara tertunda, bukan membuat seluruh daftar.

list_comp = [x * x for x in range(5)]
gen_expr = (x * x for x in range(5))
print(list_comp)
print(gen_expr)
print(list(gen_expr))

Perbedaan Memori

Komprehensi daftar mengalokasikan setiap elemen sejak awal. Ekspresi generator hampir tidak menyimpan apa pun sampai Anda meminta nilai. Bandingkan ukuran keduanya.

import sys
lst = [x for x in range(10000)]
gen = (x for x in range(10000))
print('list bytes:', sys.getsizeof(lst))
print('gen bytes:', sys.getsizeof(gen))

Melakukan Iterasi pada Ekspresi Generator

Anda mengonsumsi ekspresi generator seperti iterator apa pun: dengan perulangan for, next(), atau dengan meneruskannya ke suatu fungsi.

gen = (c.upper() for c in 'hello')
for ch in gen:
    print(ch)

Memfilter dengan if

Tambahkan klausa if untuk mempertahankan hanya item yang cocok, persis seperti dalam komprehensi.

evens = (n for n in range(10) if n % 2 == 0)
print(list(evens))

Meneruskan Langsung ke Fungsi

Jika ekspresi generator merupakan satu-satunya argumen bagi suatu fungsi, Anda dapat menghilangkan tanda kurung tambahan. Cara ini rapi dan menghindari pembuatan daftar sementara.

total = sum(x * x for x in range(5))
print(total)
biggest = max(len(w) for w in ['a', 'abc', 'ab'])
print(biggest)

Pengingat: Hanya Dapat Digunakan Sekali

Ekspresi generator habis setelah satu kali lintasan, sama seperti fungsi generator. Iterasi kedua tidak menghasilkan apa pun.

gen = (x for x in range(3))
print(list(gen))
print(list(gen))

Merangkai Ekspresi

Anda dapat meneruskan satu ekspresi generator ke ekspresi generator lain untuk membangun pipeline tertunda. Tidak ada yang dihitung sampai konsumen akhir mengambil nilai.

nums = (n for n in range(10))
evens = (n for n in nums if n % 2 == 0)
doubled = (n * 2 for n in evens)
print(list(doubled))

any() dan all()

Ekspresi generator sangat cocok dengan any() dan all() karena keduanya dapat berhenti lebih awal, segera setelah jawabannya diketahui.

words = ['cat', 'dog', 'elephant']
print(any(len(w) > 5 for w in words))
print(all(len(w) >= 3 for w in words))

Perulangan Bersarang

Seperti komprehensi, ekspresi generator mendukung beberapa klausa for yang dibaca dari kiri ke kanan.

pairs = ((x, y) for x in range(2) for y in range(2))
print(list(pairs))

Contoh Pipeline Tertunda

Berikut contoh pipeline pemrosesan teks sederhana. Setiap tahapnya tertunda, sehingga berkas yang sangat besar dapat dialirkan tanpa memuat seluruh isinya.

lines = ['  alpha ', '', '  beta', 'gamma  ']
stripped = (line.strip() for line in lines)
nonempty = (line for line in stripped if line)
print(list(nonempty))

Kapan Memilih yang Mana

Gunakan komprehensi daftar jika Anda perlu menggunakan data beberapa kali atau memerlukan pengindeksan. Gunakan ekspresi generator untuk aliran satu lintasan atau data berukuran besar.

data = range(6)
as_list = [x + 1 for x in data]
print(as_list[0], as_list[-1])
total = sum(x + 1 for x in data)
print(total)

Pemeriksaan Singkat

Uji pemahaman Anda tentang ekspresi generator.

Ringkasan

Anda telah mempelajari ekspresi generator:

  • Gunakan tanda kurung sebagai alternatif tertunda untuk komprehensi daftar.
  • Ekspresi ini menghemat memori serta mendukung penyaring if dan perulangan bersarang.
  • Ekspresi ini cocok digunakan bersama sum, any, all, dan perangkaian.
  • Ekspresi ini hanya dapat digunakan sekali.

Selanjutnya: menyusun generator dengan yield from.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Ekspresi Generator” gratis?

Ya — teks lengkap “Ekspresi 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 “Ekspresi Generator”?

Tulis pipeline malas yang ringkas 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 “Ekspresi 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. Protokol Iterator
  2. Fungsi Generator
  3. Ekspresi Generator
  4. yield from dan Delegasi
← Kembali ke Python Academy