Python의 반복자 함수 | 세트 2(islice(), starmap(), tee() ..)

| |

1. islice(반복 가능, 시작, 중지, 단계) : — 이 반복자는 반복 가능한 컨테이너에서 참조하는 값을 선택적으로 인쇄합니다 인수로 전달됩니다. 이 반복자는 4개의 인수, 반복 컨테이너, 시작 위치, 끝 위치 및 보폭을 사용합니다.

2. 스타맵(함수, 튜플 목록) : — 이 반복자는 함수와 튜플 목록 을 인수로 사용하고 목록의 각 튜플에서 함수에 따라 값을 반환합니다.

<표 테두리 = "0" cellpadding = "0" cellspacing = "0">

# 작동 방식을 보여주는 Python 코드
# islice () 및 starmap ()


# 가져오기 & quot; itertools & quot; 반복자 작업용

가져오기 itertools


# 초기화 목록

li = < 코드 클래스 = "일반"> [ <코드 클래스 = "값"> 2 <코드 클래스 = "일반">, <코드 클래스 = "값"> 4 <코드 클래스 = "일반">, <코드 클래스 = "값"> 5 <코드 클래스 = "일반">, <코드 클래스 = "값"> 7 < /코드> <코드 클래스 = "일반">, <코드 클래스 = "값"> 8 <코드 클래스 = "일반">, <코드 클래스 = "값"> 10 <코드 클래스 = "일반">, <코드 클래스 = "값"> 20 <코드 클래스 = "일반 ">]


# 튜플 목록 초기화

li1 <코드 클래스 = "키워드"> = <코드 클래스 = "일반"> [( <코드 클래스 = "값 "> 1 <코드 클래스 ="일반 ">, <코드 클래스 ="값 "> 10 <코드 클래스 ="일반 ">, <코드 클래스 ="값 "> 5 <코드 클래스 ="일반 ">), ( <코드 클래스 = "값"> 8 <코드 클래스 = "일반"> , <코드 클래스 = "값"> 4 <코드 클래스 = "일반">, <코드 클래스 = "값"> 1 <코드 클래스 = "일반 ">), ( <코드 클래스 = "값"> 5 <코드 클래스 = "일반">, <코드 클래스 = "값"> 4 <코드 클래스 = "일반">, <코드 클래스 = "값"> 9 <코드 클래스 = "일반 ">), ( <코드 클래스 ="값 "> 11 <코드 클래스 ="일반 ">, <코드 클래스 ="값"> 10 <코드 클래스 = "일반">, <코드 클래스 = "값"> 1 )]


# islice 사용( ) 에 따라 목록을 슬라이스하려면 ... 필요
# 두 번째 인덱스에서 여섯 번째 인덱스로 인쇄 시작 2 건너뛰기

print ( "슬라이스된 목록 값은 다음과 같습니다." , 끝 <코드 클래스 = "키워드"> = <코드 클래스 = "일반"> "")

<코드 클래스 = "functions"> 인쇄 ( 목록 (itertools.islice (li, 1 , <코드 클래스 ="값 "> 6 <코드 클래스 ="일반 ">, <코드 클래스 = "값"> 2 <코드 클래스 = "일반">) ))


# 스타맵()을 사용하여 값을 선택합니다. function
# 모든 튜플 값의 최소값 선택 ​​

인쇄 ( "함수에 따른 값은 다음과 같습니다." , end = "")

인쇄 ( 목록 (itertools.starmap ( 최소 <코드 클래스 = "일반">, li1)))

출력:

 슬라이스된 목록 값은 다음과 같습니다. [4, 7, 10] 값 acc. 기능은 다음과 같습니다. [1, 1, 4, 1] 

3. 잠시(func, iterable) : — 이 반복자는 drop while()의 반대이며, 함수가 처음으로 false를 반환할 때까지 ​ 값을 출력합니다 .

4. 티(반복자, 개수) : — 이 반복자는 인수에 언급된 컨테이너를 여러 개의 반복자로 나눕니다.

<표 테두리 = "0 "cellpadding =" 0 "cellspacing =" 0 ">

# 작동 방식을 보여주는 Python 코드
# takewhile() 및 tee()


# 가져오기 & quot; itertools & quot; 반복자 작업용

가져오기 itertools


# 초기화 목록

li = < 코드 클래스 = "일반"> [ <코드 클래스 = "값"> 2 <코드 클래스 = "일반">, <코드 클래스 = "값"> 4 <코드 클래스 = "일반">, <코드 클래스 = "값"> 6 <코드 클래스 = "일반">, <코드 클래스 = "값"> 7 < /코드> <코드 클래스 = "일반">, <코드 클래스 = "값"> 8 <코드 클래스 = "일반">, <코드 클래스 = "값"> 10 <코드 클래스 = "일반">, <코드 클래스 = "값"> 20 <코드 클래스 = "일반 ">]


# 목록을 반복자에 저장

아이티 <코드 클래스 = "키워드"> = <코드 클래스 = "함수"> 반복 (li)


# 사용 조건이 거짓일 때까지 값을 출력하는 takewhile().

인쇄 ( " 목록 값 ​첫 번째 거짓 값까지: " , end = " ")

인쇄 ( 목록 (itertools.takewhile ( 람다 x: x % <코드 클래스 = "값"> 2 <코드 클래스 = "키워드"> = <코드 클래스 = "키워드"> = <코드 클래스 = "value"> 0 , li)))


# 티 사용( ) 반복자를 나열하기 위해
# 동일한 값을 갖는 3개의 반복자의 목록을 만듭니다.

그것 = itertools.tee (iti , <코드 클래스 = "값"> 3 <코드 클래스 = "일반">)


<코드 클래스 = "주석"> # 반복자 값 인쇄 ​​

인쇄 ( "반복자는 다음과 같습니다." )

for 나는 범위 ( 0 <코드 클래스 = "일반">, <코드 클래스 = "값"> 3 <코드 클래스 = "일반" >): < /p>

인쇄 ( 목록 (it [i]))

출력:

첫 번째 거짓 값까지의 목록 값은 다음과 같습니다. [2, 4, 6] 반복자는 다음과 같습니다. [2, 4, 6, 7, 8, 10, 20] [2, 4, 6, 7, 8, 10, 20] [2, 4, 6, 7, 8, 10, 20]

5. zip_longest(iterable1, iterable2, fillval.) : &# 8212; 이 반복자는 반복 가능한 값을 한 번에 하나씩 인쇄합니다. 반복 중 하나가 완전히 인쇄되면 나머지 값은 fillvalue 에 할당된 값으로 채워집니다 .

<표 테두리 = "0" cellpadding = "0" cellspacing = "0">

# 작동 방식을 보여주는 Python 코드
# zip_longest ()


# 가져오기 & quot; itertools & quot; 반복자 작업용

가져오기 itertools


# zip_longest()를 사용하여 두 반복을 결합합니다.

print ( "결합된 값 ​​반복 가능한 항목은 다음과 같습니다." )

인쇄 ( * (itertools.zip_longest ( ’GesoGes’ <코드 클래스 ="일반 ">, <코드 클래스 ="문자열 ">’ ekfrek’ <코드 클래스 = "일반">, 값 채우기 <코드 클래스 = "키워드" > = <코드 클래스 = "문자열"> ’_’ <코드 클래스 = "일반">)))

출력:

 iterables의 결합된 값은 다음과 같습니다. (’G’,’ e’) (’e ’,’ k’) (’s’,’ f’) (’o’,’ r ’) (’ G’, ’e’) (’ e’, ’k’) (’ s’, ’_’ ) 

조합 반복자

1. 제품(iter1, iter2) : — 이 반복자는 인수로 전달된 두 개의 반복 가능한 컨테이너의 데카르트 곱 을 인쇄합니다.

2. 순열(iter, group_size) : — 이 반복자는 반복 가능한 모든 요소의 모든 가능한 순열 을 인쇄합니다. 각 순열 그룹의 크기 group_size 인수에 의해 결정됩니다.

<표 테두리 = "0" cellpadding = "0" cellspacing = "0">

# Python- 데모 코드
# 제품() 및 순열()


# 가져오기 & quot; itertools & quot; 반복자 작업용

가져오기 itertools


# 데카르트 곱을 인쇄하기 위해 product() 사용

인쇄 ( "컨테이너의 데카르트 곱은 다음과 같습니다." )

인쇄 ( 목록 (itertools.product( <코드 클래스 = "문자열"> ’AB’ <코드 클래스 ="일반 ">, <코드 클래스 ="문자열 ">’ 12’ <코드 클래스 = "plain">)))


# 순열을 사용하여 가능한 모든 순열을 계산합니다.

print ( "주어진 컨테이너의 모든 순열은 다음과 같습니다." < 코드 클래스 = "일반">)

<코드 클래스 = "키워드"> 인쇄 <코드 클래스 = "일반"> ( <코드 클래스 = "함수"> 목록 (itertools.permutations ( ’GfG’ , <코드 클래스 ="값 "> 2 <코드 클래스 ="일반 ">)))

출력:

 컨테이너의 데카르트 곱은 다음과 같습니다. [(’A’, ’1’), (’ A ’, ’2’), (’ B’, ’1’), (’ B’, ’2’)] 주어진 컨테이너의 모든 순열은 다음과 같습니다. [(’ G’, ’f’), (’ G ’, ’G’), (’에프’, ’G’), (’에프’, ’G’), (’G’, ’G’), (’G’, ’f’)] 

3. 조합(반복 가능, group_size) : — 이 반복자는 정렬된 순서로 지정된 그룹 크기 의 인수로 전달된 컨테이너의 가능한 모든 조합(대체 없음) 을 인쇄합니다.

4. Combines_with_replacement(반복 가능, 그룹 크기) : — 이 반복자는 정렬된 순서로 지정된 그룹 크기 의 인수로 전달된 컨테이너의 가능한 모든 조합(교체 포함) 을 인쇄합니다.

<표 테두리 = "0" cellpadding = "0" cellspacing = "0">

# 작동 방식을 보여주는 Python 코드
# 조합() 및 조합_with_replacement()


# 가져오기 & quot; itertools & quot; 반복자 작업용

가져오기 itertools


# 조합()을 사용하여 각 조합을 인쇄합니다.
# (대체 없이)

print ( "정렬된 순서로 컨테이너의 모든 조합(교체 없음)은 다음과 같습니다. " )

인쇄 ( 목록 (itertools.combinations ( ’1234’ , <코드 클래스 ="값 "> 2 <코드 클래스 ="일반 ">)))


<코드 클래스 = "comments"> # 각 조합을 인쇄하기 위해 조합_with_replacement() 사용
# 교체 포함

print ( "정렬된 순서의 모든 컨테이너 조합(교체 포함) )는 다음과 같습니다." )

인쇄 ( 목록 (itertools.combinations_with_replacement ( ’GfG’ 코드 클래스 ="일반 ">, <코드 클래스 ="값 "> 2 <코드 클래스 ="일반 ">)))

출력:

 (바꾸지 않고) 정렬된 순서로 컨테이너의 모든 조합은 다음과 같습니다. [(’ 1’,’ 2’), (’ 1’, ’3’), (’ 1’, ’4’), (’ 2’, ’3’), (’ 2’, ’4’), (’ 3’, ’4 ’)] 정렬된 순서로 컨테이너의 모든 조합(교체 포함)은 다음과 같습니다. [(’ G’, ’G’), (’ G’, ’f’), (’ G’, ’G ’), (’ f’, ’f’), (’ f’, ’G’), (’ G’, ’G’)] 

무한 반복자

1. 카운트(시작, 단계) : — 이 반복자는 "시작"에서 인쇄를 시작하고 무기한 인쇄합니다 . 단계가 언급되면 숫자를 건너뛰고, 그렇지 않으면 단계는 기본적으로 1입니다.

예:

 iterator.count (5,2) - 5,7,9,11 ...을 인쇄합니다. 무한히 

2. 루프(반복 가능) : — 이 반복자는 전달된 컨테이너의 모든 값을 순서대로 인쇄합니다. 모든 항목이 순환될 때 처음부터 다시 인쇄 를 재개합니다.

예:

 iterator.cycle ([1,2,3,4])은 - 1,2,3,4,1,2,3,4,1을 출력합니다. .. 무한히 

3. 반복 (val, num) : — 이 반복자는 전달된 값을 무한대로 반복적으로 인쇄 합니다. 번호가 언급되면 해당 번호까지입니다.

<표 테두리 = "0" 셀 패딩 = "0" 셀 간격 = "0 ">

# 작동 방식을 보여주는 Python 코드
# repeat ()


# 가져오기 & quot; itertools & quot; 반복자 작업용

가져오기 itertools


# repeat()를 사용하여 숫자를 반복적으로 출력

print ( "반복적으로 숫자 출력하기:" )

인쇄 ( 목록 (itertools.repeat ( <코드 클래스 = "값"> 25 <코드 클래스 = "일반">, <코드 클래스 = "값"> 4 <코드 클래스 = "일반">)) )

출력:

 출력 숫자 반복: [25, 25, 25, 25] 

이 기사는 맨지트 싱 . Python.Engineering으로서 기여하고 싶다면 Contribute.python.engineering 을 사용하거나 기사를 게시하여 기사를 작성할 수도 있습니다. 기여 @ python.engineering. Python.Engineering 홈페이지에 있는 내 기사를 참조하고 다른 괴짜를 도우십시오.

잘못된 점을 발견하거나 위에서 논의한 주제에 대해 더 많은 정보를 공유하고 싶은 경우 의견을 게시하십시오.