Itertools ialah salah satu perpustakaan python yang paling menarik. Ia mengandungi satu siri fungsi yang diilhamkan oleh bahasa berfungsi yang digunakan untuk bekerja dengan iterator.
Dalam artikel ini saya akan menyebut beberapa perkara yang paling menarik perhatian saya dan patut diingat supaya tidak mencipta semula roda setiap masa.
Beberapa kali saya telah melaksanakan kiraan tak terhingga (baik, ia berakhir
secara eksplisit pada satu ketika dengan rehat) menggunakan gelung True while. itertools menawarkan kami alternatif yang lebih baik:
from itertools import count for i in count(start=2, step=2): if i > 10: break print(i)
2 4 6 8 10
Seperti yang dapat dilihat dalam contoh, jika bukan kerana rehat, kiraan akan mengembalikan nombor tak terhingga. Kod di atas adalah lebih kurang sama dengan:
i = 2 while True: if i > 10: break print(i) i += 2
2 4 6 8 10
Fungsi untuk melakukan sesuatu yang sangat biasa: dapatkan data daripada urutan dalam kelompok saiz n. Mari lihat contoh:
from itertools import batched sequence = [1, 2, 3, 4, 5, 6, 7] for batch in batched(sequence, 2): # lotes de tamaño 2 print(batch)
(1, 2) (3, 4) (5, 6) (7,)
Perlu diambil perhatian bahawa kumpulan terakhir mungkin bersaiz kurang daripada atau sama dengan n, seperti dalam kes ini. Agak berguna, bukan?
Satu lagi fungsi mudah dan berguna. Memandangkan urutan (sebenarnya, diberi lelaran), ia memberikan kita elemennya secara berpasangan.
Mari kita lihat dengan lebih baik dengan contoh:
from itertools import pairwise sequence = [1, 2, 3, 4, 5, 6, 7] for a, b in pairwise(sequence): print(a, b)
1 2 2 3 3 4 4 5 5 6 6 7
Bilangan pasangan adalah kurang satu daripada saiz jujukan input.
Akhir sekali, untuk entri pendek ini, saya ingin bercakap tentang produk, a
pelaksanaan produk Cartesian.
Berguna untuk menggantikan bersarang untuk gelung itu melalui dua aliran data:
from itertools import product A = [1, 2, 3] B = [5, 6, 7] for a, b in product(A, B): print(a, b)
1 5 1 6 1 7 2 5 2 6 2 7 3 5 3 6 3 7
Menerima parameter yang membolehkan kami membuat produk Cartesian daripada
turutan dengan dirinya sendiri:
from itertools import product A = [1, 2, 3] for a1, a2, a3 in product(A, repeat=3): print(a1, a2, a3)
1 1 1 1 1 2 1 1 3 1 2 1 1 2 2 1 2 3 1 3 1 1 3 2 1 3 3 2 1 1 2 1 2 2 1 3 2 2 1 2 2 2 2 2 3 2 3 1 2 3 2 2 3 3 3 1 1 3 1 2 3 1 3 3 2 1 3 2 2 3 2 3 3 3 1 3 3 2 3 3 3
Dalam siaran akan datang, saya akan menyebut fungsi lain modul
yang berguna ini
perpustakaan standard python. Saya harap ia berguna kepada anda.
Atas ialah kandungan terperinci Menemui itertools. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!