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 중국어 웹사이트의 기타 관련 기사를 참조하세요!