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
쌍의 수는 입력 시퀀스의 크기보다 하나 적습니다.
마지막으로, 이 짧은 글을 통해 제품에 대해 이야기하고 싶습니다.
데카르트 곱의 구현.
두 개의 데이터 스트림을 통해 반복되는 중첩 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
향후 게시물에서 이 유용한 모듈의 다른 기능에 대해 언급하겠습니다.
파이썬 표준 라이브러리. 도움이 되었기를 바랍니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3