"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > itertool 발견

itertool 발견

2024-11-07에 게시됨
검색:147

Descubriendo itertools

Itertools는 가장 흥미로운 Python 라이브러리 중 하나입니다. 이터레이터 작업에 사용되는 기능적 언어에서 영감을 받은 일련의 기능이 포함되어 있습니다.

이 기사에서는 내 관심을 가장 많이 끌었고 매번 바퀴를 재발명하지 않도록 염두에 둘 가치가 있는 몇 가지 사항에 대해 언급하겠습니다.

세다

무한 카운트를 여러 번 구현했습니다. (음, 끝납니다.
특정 지점에서 명시적으로 중단) while True 루프를 사용합니다. itertools는 더 나은 대안을 제공합니다:

itertools 가져오기 횟수의
    from itertools import count

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

    2
    4
    6
    8
    10

예제에서 볼 수 있듯이 휴식 시간이 아닌 경우 count는 무한한 숫자를 반환합니다. 위의 코드는 대략 다음과 같습니다:

    i = 2

    while True:
        if i > 10:
            break

        print(i)
        i  = 2

    2
    4
    6
    8
    10

일괄 처리

매우 일반적인 작업을 수행하는 함수: 스트림에서 크기 n의 배치로 데이터를 가져옵니다. 예를 살펴보겠습니다:

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

이 경우처럼 마지막 배치의 크기가 n보다 작거나 같을 수 있다는 점에 유의해야 합니다. 꽤 유용하지 않나요?

쌍으로

또 다른 간단하고 유용한 기능입니다. 시퀀스가 주어지면(실제로는 반복자가 주어지면) 해당 요소를 쌍으로 제공합니다.

예를 통해 더 자세히 살펴보겠습니다.

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

쌍의 수는 입력 시퀀스의 크기보다 하나 적습니다.

제품

마지막으로, 이 짧은 글을 통해 제품에 대해 이야기하고 싶습니다.
데카르트 곱의 구현.

두 개의 데이터 스트림을 통해 반복되는 중첩 for를 대체하는 데 유용합니다.

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


의 데카르트 곱을 만들 수 있는 매개변수를 받습니다. 자체 시퀀스:

itertools 가져오기 제품의
   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

향후 게시물에서 이 유용한 모듈의 다른 기능에 대해 언급하겠습니다.
파이썬 표준 라이브러리. 도움이 되었기를 바랍니다.

릴리스 선언문 이 기사는 https://dev.to/johnnatan_sandovalcardon/descubriendo-itertools-507j?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3