Menemui itertools

WBOY
Lepaskan: 2024-09-03 10:40:01
asal
518 orang telah melayarinya

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)

Salin selepas log masuk
    2
    4
    6
    8
    10
Salin selepas log masuk
Salin selepas log masuk

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

Salin selepas log masuk
    2
    4
    6
    8
    10
Salin selepas log masuk
Salin selepas log masuk

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)
Salin selepas log masuk
    (1, 2)
    (3, 4)
    (5, 6)
    (7,)
Salin selepas log masuk

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)
Salin selepas log masuk
    1 2
    2 3
    3 4
    4 5
    5 6
    6 7
Salin selepas log masuk

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)
Salin selepas log masuk
   1 5
    1 6
    1 7
    2 5
    2 6
    2 7
    3 5
    3 6
    3 7
Salin selepas log masuk

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)
Salin selepas log masuk
    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
Salin selepas log masuk

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!

sumber:dev.to
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!