it공부 (개념)/python

enumerate(이뉴머레이트) 함수: 배열의 인덱스와 값에 함께 접근해보자/ 파이썬

cantor 2023. 3. 20. 00:00

 

 

enumerate?

  • 뜻:

       하나하나 세다

 

  • 파이썬 함수:

       순회 가능한 객체를 입력받고 
       enumerate 오브젝트를 반환하는 함수

 

 

*다시 말하자면 string, list, tuple 등   [0]과 같은 인덱스로 

접근가능한 자료구조를 인자로 받아들인다.

 

그리고 마찬가지로 비슷한 구조를 가진 enumerate 라는 객체를 반환한다.

 

 

 

enumerate오브젝트?

 

loop문으로 순회가 가능한 객체이다.

 

입력받은 인자의 인덱스 번호 및 성분을 함께 담고 있는

튜플을 원소로 갖는다. 

example = [x,y,z]

enumerate(example)

이 반환하는 객체는 다음과 같은 값들을 갖는다.

(0,x),(1,y),(2,z)

 

성분을 보고 싶다면 list()를 통해 리스트로 변화시키면 된다.

 

* tuple()도 가능하나 str()은 안된다

 

enumerate 객체의 성분을 프린트하기

 

 

파이썬 공식문서 설명

https://docs.python.org/3/library/functions.html#enumerate

enumerate (iterable, start=0)
enumerate 객체를 반환합니다.

첫 번째 인자로 쓰이는 iterable은 반드시 sequence의 한 종류여아 합니다.

 enumerate()가 반환한 값의 __next__메서드는

start값으로 시작하는 인덱스와  iterable을 순회하며 얻은 성분을 묶은
튜플을 반환합니다.

* 밑에 설명을 위한 사진을 넣었다.


* sequence:
리스트, 튜플 range(숫자) 등등의 인덱스로 접근가능한 자료구조를 뜻한다.

한국어로는 수열이라 한다. 따지고 보면 전부 불규칙 수열이다.

start 설정값 = 2부터 시작하는 인덱스번호가 example의 성분들과 묶였다.

 

 

 

어디에 쓰이는가?

 

 

1.

설명 그대로 iterable의 각 성분과 인덱스를 묶은

튜플을 저장한 sequence를 만든다.

 

2.

인덱스와 성분을 함께 사용하여 for문을 순회하는데에 쓰인다.

이를 이용하면 2차원 배열을 훨씬 수월하게 조작할 수 있다.

 

 

2차원 배열 조작 살펴보기

 

* 파이썬의 2차원 배열은 2중 리스트로 많이 구현하곤 한다.

matrix = [[0,0,0],[0,1,0],[0,2,0]]

1행 = matrix[0] = [0,0,0]
2행 = matrix[1] = [0,1,0]
3행 = matrix[2] = [0,2,0]

 

enumerate를 사용하지 않는 for문

 

for문으로 iterable 자료를 순회하려면

순회에 이용할 값을 대상성분의 인덱스나 값 중 하나로

결정해야 한다.

 

range를 이용하여 인덱스를 통해 순회하기:

for i in range(iterable)

 

성분을 통해 순회하기:

for row in iterable

 

 

 

 

enumerate를 사용하는 for문

 

enumerate를 사용할 경우, 둘 중 하나를 결정하지 않아도 된다.

그래서 훨씬 간결하고 깔끔한 코드를 짤 수 있다.

 

 

인덱스와 성분을 함께 순회하기

for i, row in iterable

 

 

 

 

아래의 두 코드는 비슷한 기능을 한다.

 

코드를 이해할 필요는 없다

다만 2차원배열의 내부성분에 접근하는 방법을 살펴보자.

위에선 enmerate를 사용하지 않고, 접근에 사용할 값을 인덱스로 정했다.

그래서 최종 값에 board[ i ][ j ] 형태로 접근하고 있다.

 

아래의 코드에선 굳이 row [ j ], 또는 board [ i ][ j ]를 사용하지 않고

x를 통해 바로 최종 값에 접근하는 것을 볼 수 있다.

 

 

읽어주셔서 감사합니다.

오류나 오탈자가 있다면 댓글로 알려주세요.