"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Descobrindo itertools

Descobrindo itertools

Publicado em 2024-11-07
Navegar:473

Descubriendo itertools

Itertools é uma das bibliotecas python mais interessantes. Ele contém uma série de funções inspiradas em linguagens funcionais usadas para trabalhar com iteradores.

Neste artigo vou citar alguns dos que mais me chamaram a atenção e que vale a pena ter em mente para não reinventar a roda todas as vezes.

Contar

Várias vezes eu implementei uma contagem infinita (bem, ela termina
explicitamente em algum ponto com uma pausa) usando um loop while True. itertools nos oferece uma alternativa melhor:

    from itertools import count

    for i in count(start=2, step=2):
        if i > 10:
            break
        print(i)

    2
    4
    6
    8
    10

Como pode ser visto no exemplo, se não fosse o break, count retornaria números infinitos. O código acima é aproximadamente equivalente a:

    i = 2

    while True:
        if i > 10:
            break

        print(i)
        i  = 2

    2
    4
    6
    8
    10

em lote

Uma função para fazer algo muito comum: obter dados de um fluxo em lotes de tamanho n. Vejamos um exemplo:

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,)

Ressalta-se que o último lote poderá ter tamanho menor ou igual a n, como neste caso. Muito útil, você não acha?

aos pares

Outra função simples e útil. Dada uma sequência (na verdade, dado um iterador), ela nos dá seus elementos em pares.

Vamos ver melhor com um exemplo:

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

O número de pares é um a menos que o tamanho da sequência de entrada.

produto

Finalmente, para esta breve entrada, quero falar sobre produto, um
implementação do produto cartesiano.

Útil para substituir um for aninhado que percorre dois fluxos de dados:

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

Recebe um parâmetro que nos permite fazer o produto cartesiano de um
sequência consigo mesmo:

   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

Em um post futuro, mencionarei outras funções deste módulo útil
biblioteca padrão python. Espero que seja útil para você.

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/johnnatan_sandovalcardon/descubriendo-itertools-507j?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3