Python에서 Enumerate 함수를 사용하여 카운터가 있는 루프 생성

Use Enumerate Function Python Create Loops With Counters



이 기사에서는 Python의 표준 모듈 라이브러리에서 사용할 수 있는 enumerate 함수의 사용법을 설명합니다. 열거 기능을 사용하면 반복 가능한 객체의 요소에 인덱스 또는 개수를 할당할 수 있습니다. 그런 다음 매핑된 값과 개수 모두에 액세스할 수 있으므로 추가 논리를 구현할 수 있습니다.

구문 및 기본 예

다른 프로그래밍 언어, 특히 C 언어 및 C 스타일 구문이 있는 다른 언어에서 for 루프를 사용한 경우 루프에서 시작 인덱스를 지정했을 수 있습니다. 참고로 다음은 C 및 유사한 구문을 가진 다른 언어에서 for 루프가 어떻게 보이는지 보여줍니다.







~을위한 (정수NS= 0;NS< 10;NS++)

{

인쇄 ('%NSN',NS);

}

루프 문은 값이 0인 변수를 초기화하고 임계값보다 작은지 확인하고 루프 블록 내부의 논리를 평가한 후(정지 조건이 충족되는 경우) 한 카운트씩 증가시킵니다. 이 방법으로 인덱스를 사용하고 루프 블록에서 참조하는 모든 객체에 할당할 수 있습니다. 이에 비해 Python에서 동일한 결과를 갖는 for 루프는 다음과 같습니다.

~을위한NS~에 범위(0, 10):

인쇄 (NS)

Python의 범위 함수를 사용하면 기본 단계가 1인 숫자 범위 시퀀스를 지정할 수 있습니다. 세 번째 인수를 제공하여 단계 값을 변경할 수 있습니다. 범위 함수의 두 번째 인수는 정지 조건에 대한 임계값을 설정하는 데 사용됩니다. 두 코드 샘플 모두 다음 출력을 생성합니다.

0

1

2



4

5

6

7

8

9

이러한 루프는 숫자 시퀀스를 생성하고 루프 문 내부의 일부 논리와 연결하려는 경우 잘 작동합니다. 그러나 다른 중첩 루프를 사용하거나 반복 가능한 유형에 대해 yield 함수를 사용하여 일종의 추적 가능한 카운트를 할당해야 할 수도 있습니다. enumerate 메소드를 사용하면 하나의 명령문에서 iterable에 인덱스를 쉽게 할당할 수 있으므로 여러 중첩 루프를 실행할 필요가 없습니다. 이 코드 샘플을 살펴보십시오.

숫자= ['영', '하나', '둘', '삼', '넷', '다섯']

enumerated_numbers= 나열(숫자)

~을위한인덱스,안건~에enumerated_numbers:

인쇄 (인덱스,안건)

첫 번째 문은 숫자라는 새 변수를 정의하고 이 변수에 반복 가능한(목록 유형)을 할당합니다. 두 번째 명령문은 필수 인수로 iterable을 제공하는 enumerate 함수의 사용법을 보여줍니다. 세 번째 문은 enumerated_numbers 변수를 목록 유형 개체로 변환합니다. 기본적으로 enumerate 함수는 iterable 유형이 아닌 enumerate 유형 객체를 생성하므로 변환해야 합니다. 위에서 언급한 코드 샘플을 실행한 후에는 다음과 같은 출력을 얻을 수 있습니다.

[(0, '0'), (1, '하나'), (2, '둘'), (3, '셋'), (4, '넷'), (5, '다섯')]

열거 함수는 반복 가능한 유형의 각 요소에 개수를 할당하고 쌍을 이루는 값을 갖는 튜플을 생성합니다. 기본적으로 카운트는 0부터 시작합니다.

반복 가능한 유형의 각 요소에 숫자를 할당했으므로 중첩 문을 작성하지 않고도 쉽게 반복할 수 있습니다.

숫자= ['영', '하나', '둘', '삼', '넷', '다섯']

enumerated_numbers= 나열(숫자)

~을위한인덱스,안건~에enumerated_numbers:

인쇄 (인덱스,안건)

위에 지정된 코드 샘플은 다음 출력을 생성합니다.

0 제로

1개

2 둘

3 셋

4 4

5 다섯

아래 샘플과 같이 enumerate 함수를 인라인으로 사용하여 코드를 더 짧게 만들 수 있습니다.

숫자= ['영', '하나', '둘', '삼', '넷', '다섯']

~을위한인덱스,안건~에 나열(숫자):

인쇄 (인덱스,안건)

다른 시작 인덱스로 열거 사용

열거 함수는 시작 인덱스를 지정할 수 있는 선택적 인수를 사용합니다. 기본적으로 0이지만 시작 인수를 사용하여 변경할 수 있습니다.

숫자= ['하나', '둘', '삼', '넷', '다섯']

~을위한인덱스,안건~에 나열(숫자,시작=1):

인쇄 (인덱스,안건)

두 번째 명령문에서 start=1 인수는 시작점을 변경하는 데 사용됩니다. 위에 지정된 코드 샘플을 실행한 후 다음 출력을 얻어야 합니다.

1개

2 둘

3 셋

4 4

5 다섯

단계가 있는 인덱스 할당

이 기사의 첫 번째 섹션에서는 C 언어의 for 루프 구문이 표시되며, 여기서 각 후속 카운트 또는 인덱스 사이의 단계를 정의할 수 있습니다. Python의 enumerate 함수에는 사용 가능한 인수가 없으므로 카운트 사이에 단계를 지정할 수 없습니다. 열거된 for 루프 블록 내에서 단계를 구현하기 위해 실제로 고유한 논리를 작성할 수 있습니다. 그러나 최소한의 코드를 작성하여 사용자 정의 단계를 구현하는 방법이 있습니다. 다음 예는 zip 및 범위 함수를 사용한 단계 구현을 보여줍니다.

숫자= ['영', '둘', '넷', '여섯']

~을위한인덱스,안건~에 지퍼(범위(0, 7, 2),숫자):

인쇄 (인덱스,안건)

zip 함수를 사용하면 두 개 이상의 반복 가능한 항목에서 동일한 인덱스를 가진 요소를 선택하여 쌍을 만들 수 있습니다. 그래서 여기에서 zip 함수는 range(0, 7, 2) 함수에서 반환된 iterable에서 요소를 선택하고 숫자 목록에서 다른 요소를 선택한 다음 둘 다 튜플로 쌍으로 만듭니다. 최종 결과는 열거 함수와 동일한 구현이지만 range(0, 7, 2) 함수(이 경우 2)에서 세 번째 인수로 사용자 정의 단계가 지정되어 있습니다. 위에 지정된 코드 샘플을 실행한 후 다음 출력을 얻어야 합니다.

0 제로

2 둘

4 4

6 여섯

결론

Python의 열거 함수를 사용하면 반복 가능한 객체의 요소에 숫자 시퀀스를 할당하여 간결한 코드를 작성할 수 있습니다. 이것은 iterable 유형 내부의 항목 인덱스를 추적하려는 경우에 정말 유용합니다. 사용자 정의 단계로 반복 가능한 유형을 열거하려면 마지막 예제에서 설명한 zip 함수를 사용하십시오.