>  기사  >  백엔드 개발  >  itertool 발견

itertool 발견

WBOY
WBOY원래의
2024-09-03 10:40:01590검색

Descubriendo itertools

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

이 기사에서는 제가 가장 관심을 끌었고 매번 새로운 일을 하지 않도록 염두에 두어야 할 몇 가지 사항에 대해 언급하겠습니다.

세다

무한 카운트를 여러 번 구현했습니다(뭐, 끝납니다
특정 지점에서 명시적으로 중단) while True 루프를 사용합니다. 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

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

제품

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

두 개의 데이터 스트림을 통해 반복되는 중첩 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

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

   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

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

위 내용은 itertool 발견의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.