Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menemui itertools

Menemui itertools

WBOY
WBOYasal
2024-09-03 10:40:01590semak imbas

Descubriendo itertools

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.

Kira

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

berkumpulan

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?

berpasangan

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.

produk

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn