Data Science and Data Proicessing

고급 Python : Itertools 라이브러리 — Python 언어의 보석

꼭 알아야 할 놀라운 Python 라이브러리의 기능 설명

Python Itertools 라이브러리가 Python의 보석으로 간주된다는 사실을 알고 계셨습니까?

일부 사용자는 가장 멋지고 놀라운 Python 라이브러리 중 하나로 간주합니다.

Itertools 모듈을 사용하여 애플리케이션을 풍부하게하고 단시간에 견고한 작업 솔루션을 만들 수 있습니다.

Image for post
~의 사진Ilze Lucero의 위에Unsplash

이 기사는 독자가 프로젝트에서 Itertools 모듈을 사용하는 방법을 이해하는 데 도움이 될 것입니다.

이것은 Python 개발자를위한 고급 수준의 주제이며 Python 프로그래밍 언어를 사용하려는 모든 사람에게 권장합니다.

초보자부터 고급 수준까지 Python 프로그래밍 언어를 이해하고 싶다면 아래 기사를 적극 권장합니다.

기사 목표

이 기사에서는 Itertools 라이브러리에 대한 개요를 제공합니다.

이 기사를 세 부분으로 나누었으며 각 부분은 Itertools 라이브러리의 특정 기능을 설명합니다.

특히 다음과 같이 설명하겠습니다.

  1. 무한 반복자
  2. 반복기 종료
  3. 조합 반복자

Itertools 라이브러리를 사용하여 더 짧은 시간에 정확하고 메모리 효율적이며 안정적인 애플리케이션을 구현할 수 있습니다.

이 기사는 itertools 버전 2.3 및 Python 3.8을 기반으로합니다.

Python 코드에서 itertools 라이브러리를 가져옵니다.

import itertools as it
Image for post
~의 사진의식적인 디자인의 위에Unsplash

참고 : 반복 자란 무엇입니까?

반복자__다음__방법. 상태가 있습니다. 상태는 반복 중에 실행을 기억하는 데 사용됩니다. 따라서 반복기는 현재 상태를 알고 있으며 이는 메모리를 효율적으로 만듭니다. 이것이 반복기가 메모리 효율적이고 빠른 애플리케이션에서 사용되는 이유입니다.

무한한 데이터 스트림 (파일 읽기 등)을 열고 다음 항목 (예 : 파일의 다음 줄)을 가져올 수 있습니다. 그런 다음 항목에 대한 작업을 수행하고 다음 항목으로 진행할 수 있습니다. 이것은 현재 항목 만 인식하면되므로 무한한 수의 요소를 반환하는 반복기를 가질 수 있음을 의미 할 수 있습니다.

반복에서 다음 값을 반환하고 다음 항목을 가리 키도록 상태를 업데이트하는 __next__ 메서드가 있습니다. 반복자는 우리가 실행할 때 항상 스트림에서 다음 항목을 가져옵니다.다음 (반복자)

반환 할 다음 항목이 없으면 반복기가 StopIteration 예외를 발생시킵니다.

결과적으로 반복자를 사용하여 린 애플리케이션을 구현할 수 있습니다.

목록, 문자열, 파일 행, 사전, 튜플 등과 같은 컬렉션은 모두 이터레이터입니다.

참고 : 반복 가능이란 무엇입니까?

반복 가능반복자를 반환 할 수있는 개체입니다. 그것은__iter__반환하는 메서드반복자.

iterable은 반복 할 수 있고 iter ()를 호출 할 수있는 객체입니다. 그것은__getitem__0부터 시작하는 순차 인덱스를 가져 와서IndexError인덱스가 더 이상 유효하지 않을 때).

~의 사진조슈아 풀러의 위에Unsplash

Itertools 란 무엇입니까?

Itertools는 Python 3 표준 라이브러리의 일부인 Python 모듈입니다. 이를 통해 반복기에서 메모리 및 계산 효율적인 작업을 수행 할 수 있습니다. 그것은APL, Haskell 및 SML의 구성에서 영감을 얻었습니다..

기본적으로 모듈에는 순수 Python에서 간결하고 효율적으로 애플리케이션을 빌드하는 데 도움이되는 빠르고 메모리 효율적인 메서드가 많이 포함되어 있습니다.

Python의 Itertool은 반복기를 생성하기 위해 반복기에서 작동하는 다양한 함수를 제공하는 모듈입니다. 그것은 우리가반복기 대수.

Image for post
~의 사진개비 콘데의 위에Unsplash

가장 중요한 점은 itertools 함수가 반복자를 반환 할 수 있다는 것입니다.

이것은 우리를 기사의 핵심으로 안내합니다. 무한 반복기가 어떻게 작동하는지 이해합시다.

1. 무한 반복자

무한한 균등 간격 값을 반환하는 반복기를 생성하려면 어떻게해야합니까? 또는 반복기에서 요소의 순환을 생성해야한다면 어떻게 될까요? 아니면 반복자의 요소를 반복하고 싶습니까?

itertools 라이브러리는 필요한 모든 기능을 수행하는 데 사용할 수있는 기능 세트를 제공합니다.

이 섹션에 나열된 세 가지 함수는 무한 항목의 스트림이 될 수있는 반복기를 구성하고 반환합니다.

카운트

예를 들어 균등 한 간격의 값의 무한 시퀀스를 생성 할 수 있습니다.

start = 10
stop = 1
my_counter = it.count(start, stop)
for i in my_counter:
# this loop will run for ever
print(i)

이것은 끝없는 항목을 인쇄합니다.

10
11
12
13
14
15

주기

순환 방법을 사용하여 입력에서 요소의 무한 순환을 생성 할 수 있습니다.

메소드의 입력은 목록, 문자열 또는 사전 등과 같은 반복 가능해야합니다.

my_cycle = it.cycle('Python')
for i in my_cycle:
print(i)

이렇게하면 끝이없는 항목이 인쇄됩니다.


와이

h
영형


와이

h
영형

반복

항목 (문자열 또는 컬렉션)을 반복하려면 repeat () 함수를 사용할 수 있습니다.

to_repeat = 'FM'
how_many_times = 4
my_repeater = it.repeat(to_repeat, how_many_times)
for i in my_repeater:
print(i)
#Prints
FM
FM
FM
FM

이것은 문자열‘FM’을 4 번 반복합니다. 두 번째 매개 변수를 제공하지 않으면 문자열을 무한 반복합니다.

Image for post
~의 사진우이의 위에Unsplash

2. 반복기 종료

그러면 주제의 다음 섹션으로 이동합니다.

이 섹션에서는 반복 종료의 강력한 기능을 설명합니다. 이러한 기능은 다음과 같은 여러 가지 이유로 사용할 수 있습니다.

  • 여러 반복 가능 항목이있을 수 있으며 단일 시퀀스에서 모든 반복 가능 항목의 요소에 대해 하나씩 작업을 수행하려고합니다.
  • 또는 iterable의 모든 단일 요소에 대해 수행하려는 여러 함수가있을 때
  • 또는 때로는 술어가 참인 한 iterable에서 요소를 삭제하고 다른 요소에 대해 조치를 수행하려고합니다.

체인

이 메서드를 사용하면 남은 요소가 없을 때까지 시퀀스의 모든 입력 이터 러블에서 요소를 반환하는 이터레이터를 만들 수 있습니다. 따라서 연속 시퀀스를 단일 시퀀스로 처리 할 수 ​​있습니다.

chain = it.chain([1,2,3], ['a','b','c'], ['End'])
for i in chain:
print(i)

다음과 같이 인쇄됩니다.

1
2




종료

동안 드롭

이터 러블을 조건과 함께 전달할 수 있으며이 메서드는 조건이 요소에 대해 False를 반환 할 때까지 각 요소에 대한 조건 평가를 시작합니다. 조건이 요소에 대해 False로 평가 되 자마자이 함수는 이터 러블의 나머지 요소를 반환합니다.

예를 들어 작업 목록이 있고 요소를 반복하고 조건이 충족되지 않는 즉시 요소를 반환하려고한다고 가정합니다. 조건이 False로 평가되면 반복기의 나머지 요소를 반환 할 것으로 예상됩니다.

jobs = ['job1', 'job2', 'job3', 'job10', 'job4', 'job5']
dropwhile = it.dropwhile(lambda x : len(x)==4, jobs)
for i in dropwhile:
print(i)

이 메서드는 다음을 반환합니다.

직업 10
직업 4
직업 5

이 메소드는 job10 요소의 길이가 4자가 아니므로 job10 및 나머지 요소가 리턴되기 때문에 위의 세 항목을 리턴했습니다.

입력 조건과 이터 러블도 복잡한 객체가 될 수 있습니다.

잠시

이 메서드는 dropwhile () 메서드와 반대입니다. 기본적으로 첫 번째 조건이 False를 반환하고 다른 요소를 반환하지 않을 때까지 iterable의 모든 요소를 ​​반환합니다.

예를 들어, 작업 목록이 있고 조건이 충족되지 않는 즉시 작업 반환을 중지하려고한다고 가정합니다.

jobs = ['job1', 'job2', 'job3', 'job10', 'job4', 'job5']
takewhile = it.takewhile(lambda x : len(x)==4, jobs)
for i in takewhile:
print(i)

이 메서드는 다음을 반환합니다.

직업 1
직업 2
job3

이는‘job10’의 길이가 4자가 아니기 때문입니다.

GroupBy

이 함수는 이터 러블의 연속 요소를 그룹화 한 후 이터레이터를 생성합니다. 이 함수는 키, 값 쌍의 반복자를 반환합니다. 여기서 키는 그룹 키이고 값은 키로 그룹화 된 연속 요소의 컬렉션입니다.

다음 코드 스 니펫을 고려하십시오.

iterable = 'FFFAARRHHHAADDMMAAALLIIKKK'
my_groupby = it.groupby(iterable)
for key, group in my_groupby:
print('Key:', key)
print('Group:', list(group))

그룹 속성은 반복 가능하므로 목록으로 구체화했습니다.

결과적으로 다음과 같이 인쇄됩니다.

키 : F
그룹 : [‘F’,‘F’,‘F’]
키 : A
그룹 : [‘A’,‘A’]
키 : R
그룹 : [‘R’,‘R’]
키 : H
그룹 : [‘H’,‘H’,‘H’]
키 : A
그룹 : [‘A’,‘A’]
키 : D
그룹 : [‘D’,‘D’]
키 : M
그룹 : [‘M’,‘M’]
키 : A
그룹 : [‘A’,‘A’,‘A’]
키 : L
그룹 : [‘L’,‘L’]
키 : I
그룹 : [‘I’,‘I’]
키 : K
그룹 : [‘K’,‘K’,‘K’]

복잡한 논리로 그룹화하려는 경우 키 함수를 두 번째 인수로 전달할 수도 있습니다.

이 메소드는 이터 러블을 분할하고 입력에서 새 이터 러블을 생성 할 수 있습니다. 출력은 주어진 항목 수에 대한 반복 가능 항목을 반환하는 반복기이기도합니다. 더 잘 이해하려면 아래 스 니펫을 검토하세요.

iterable = 'FM'
tee = it.tee(iterable, 5)
for i in tee:
print(list(i))

이 메서드는 전체 반복 가능한 FM을 5 번 반환했습니다.

[‘F’,‘M’]
[‘F’,‘M’]
[‘F’,‘M’]
[‘F’,‘M’]
[‘F’,‘M’]

Image for post
~의 사진개비 콘데의 위에Unsplash

3. 조합 반복자

기사의이 섹션에서는 모든 Python 프로그래머에게 확실한 이해를 위해 권장하는 두 가지 방법을 설명합니다.

순열

입력에서 요소의 연속적인 순열을 반환하는 반복기를 만들 수 있습니다.순열 방법을 사용하여 반복 가능.

순열의 길이를 지정하기 위해 인수를 전달할 수 있습니다. iterable의 길이가 기본값입니다.

이것은 길이가 누락되면 메서드가 가능한 모든 전체 길이 순열을 생성한다는 것을 의미합니다.

iterable = 'FM1'length = 2
permutations = it.permutations(iterable, length)
for i in permutations:
print(i)

다음과 같이 인쇄됩니다.

(‘F’,‘M’,‘1’)
(‘F’,‘1’,‘M’)
(‘M’,‘F’,‘1’)
(‘M’,‘1’,‘F’)
(‘1’,‘F’,‘M’)
(‘1’,‘M’,‘F’)

길이가 2이면 다음을 생성합니다.

(‘F’,‘M’)
(‘F’,‘1’)
(‘M’,‘F’)
(‘M’,‘1’)
(‘1’,‘F’)
(‘1’,‘M’)
(‘F’,‘M’)
(‘F’,‘1’)
(‘M’,‘1’)

조합

마지막으로 iterable 조합을 생성하는 방법에 대한 설명을 제공하고 싶었습니다.

이터 러블이 주어지면 요소의 하위 시퀀스를 반환하는 이터레이터를 구성 할 수 있습니다.주어진 길이의.

요소는 위치에 따라 고유 한 것으로 처리되며 고유 한 요소 만 반환됩니다.

iterable = 'FM1'
combinations = it.combinations(iterable, 2)
for i in combinations:
print(i)

다음과 같이 인쇄됩니다.

(‘F’,‘M’)
(‘F’,‘1’)
(‘M’,‘1’)

Image for post
~의 사진Ilze Lucero의 위에Unsplash

요약

이 기사에서는 Itertools 라이브러리의 사용에 대해 설명했습니다. 특히 다음과 같이 설명했습니다.

  1. 무한 반복자
  2. 반복기 종료
  3. 조합 반복자

itertools 메소드를 조합하여 애플리케이션에서 강력한 기능 세트를 제공 할 수 있습니다. Itertools 라이브러리를 사용하여 더 짧은 시간에 정확하고 메모리 효율적이며 안정적인 애플리케이션을 구현할 수 있습니다.

Itertools 라이브러리를 사용할 수 있는지 평가하기 위해 잠재적으로 애플리케이션을 평가하는 것이 좋습니다.

자세한 내용은 Python 공식 문서를 참조하십시오.여기

+ Recent posts