Python Academy · Pelajaran

itertools: Lelaran Tak Terhingga dan Terhingga

Gunakan count, cycle, islice, chain dan zip_longest.

Pelajaran 1 daripada 413 langkah

itertools: Lelaran Tak Terhingga dan Terhingga ialah pelajaran Python Academy percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Python Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Apakah itu itertools?

itertools ialah modul pustaka standard yang menyediakan komponen asas untuk membina objek yang boleh diulang dengan cekap dari segi memori. Semua fungsi mengembalikan objek yang boleh diulang, bukan senarai.

import itertools

# count: infinite counter
for i in itertools.islice(itertools.count(10, 2), 5):
    print(i, end=" ")  # 10 12 14 16 18

count()

count(start, step) menghasilkan jujukan aritmetik tak terhingga. Sentiasa gabungkannya dengan islice atau syarat berhenti.

import itertools

for n in itertools.count(1, 10):
    if n > 40:
        break
    print(n, end=" ")  # 1 11 21 31 41

cycle()

cycle(iterable) mengulangi objek yang boleh diulang tanpa henti.

import itertools

colors = itertools.cycle(["red","green","blue"])
for _ in range(7):
    print(next(colors), end=" ")
# red green blue red green blue red

repeat()

repeat(value, times) menghasilkan nilai yang sama sebanyak times kali (tanpa henti jika tidak dinyatakan).

import itertools
print(list(itertools.repeat(42, 4)))   # [42, 42, 42, 42]
print(list(map(pow, range(5), itertools.repeat(2))))
# [0, 1, 4, 9, 16]

islice()

islice(it, stop) atau islice(it, start, stop, step) mengambil bahagian daripada objek yang boleh diulang tanpa membina keseluruhannya terlebih dahulu.

import itertools

result = list(itertools.islice(range(100), 2, 10, 2))
print(result)  # [2, 4, 6, 8]

chain()

chain(*iterables) menggabungkan beberapa objek yang boleh diulang, hujung ke hujung, menjadi satu objek yang boleh diulang.

import itertools

result = list(itertools.chain([1,2], [3,4], [5]))
print(result)  # [1, 2, 3, 4, 5]

# chain.from_iterable for a list of iterables:
nested = [[1,2],[3,4]]
print(list(itertools.chain.from_iterable(nested)))

zip_longest()

zip_longest menggabungkan objek yang boleh diulang dengan panjang berbeza, lalu mengisi nilai yang hilang dengan fillvalue.

import itertools

a = [1, 2, 3]
b = ["a", "b"]
print(list(itertools.zip_longest(a, b, fillvalue=0)))
# [(1, "a"), (2, "b"), (3, 0)]

dropwhile() dan takewhile()

takewhile(pred, it) menghasilkan item selagi predikat adalah benar. dropwhile melakukan perkara yang sebaliknya.

import itertools

nums = [1, 3, 5, 6, 7, 9]
print(list(itertools.takewhile(lambda x: x % 2, nums)))
# [1, 3, 5]

print(list(itertools.dropwhile(lambda x: x % 2, nums)))
# [6, 7, 9]

filterfalse()

filterfalse(pred, it) menghasilkan elemen yang predikatnya False — pelengkap kepada filter().

import itertools

evens = list(itertools.filterfalse(lambda x: x%2, range(10)))
print(evens)  # [0, 2, 4, 6, 8]

starmap()

starmap(func, iterable) menggunakan fungsi pada setiap tuple argumen daripada objek yang boleh diulang.

import itertools, operator

pairs = [(2,3),(4,5),(1,10)]
result = list(itertools.starmap(operator.mul, pairs))
print(result)  # [6, 20, 10]

groupby()

groupby(it, key) mengumpulkan elemen berturutan yang mempunyai nilai kunci yang sama. Susun objek yang boleh diulang terlebih dahulu untuk mendapatkan pengumpulan yang betul.

import itertools

data = sorted([("a",1),("b",2),("a",3)], key=lambda x:x[0])
for key, group in itertools.groupby(data, key=lambda x:x[0]):
    print(key, list(group))

Semakan Pantas

Apakah hasil yang diberikan oleh itertools.chain([1,2], [3,4])?

Rumusan

itertools menyediakan objek yang boleh diulang tanpa henti (count, cycle, repeat), pemotongan (islice), penggabungan (chain, zip_longest) dan penapisan (takewhile, dropwhile, filterfalse). Kesemuanya bersifat malas dan cekap dari segi memori.

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
76
Pelajaran
320

Soalan Lazim

Adakah pelajaran “itertools: Lelaran Tak Terhingga dan Terhingga” percuma?

Ya — teks penuh “itertools: Lelaran Tak Terhingga dan Terhingga” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Python Academy, tingkat taraf kepada CoddyKit PRO. Kursus Python Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “itertools: Lelaran Tak Terhingga dan Terhingga”?

Gunakan count, cycle, islice, chain dan zip_longest. Anda berlatih Python Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Python Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Python Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.

Berapa lamakah pelajaran “itertools: Lelaran Tak Terhingga dan Terhingga” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. itertools: Lelaran Tak Terhingga dan Terhingga
  2. itertools: Kombinatorik
  3. functools: partial dan reduce
  4. functools: lru_cache dan cached_property
← Kembali ke Python Academy