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 (iterable, start=0)
enumerate 객체를 반환합니다.
첫 번째 인자로 쓰이는 iterable은 반드시 sequence의 한 종류여아 합니다.
enumerate()가 반환한 값의 __next__메서드는
start값으로 시작하는 인덱스와 iterable을 순회하며 얻은 성분을 묶은
튜플을 반환합니다.
* 밑에 설명을 위한 사진을 넣었다.
* sequence:
리스트, 튜플 range(숫자) 등등의 인덱스로 접근가능한 자료구조를 뜻한다.
한국어로는 수열이라 한다. 따지고 보면 전부 불규칙 수열이다.
어디에 쓰이는가?
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를 통해 바로 최종 값에 접근하는 것을 볼 수 있다.
읽어주셔서 감사합니다.
오류나 오탈자가 있다면 댓글로 알려주세요.
'it공부 (개념) > python' 카테고리의 다른 글
__init__? 파이썬 magic method(매직메서드)란? (1) | 2023.01.03 |
---|---|
반복문을 사용하여 List를 수정할때에는 새로운 List를 만들자. (0) | 2022.12.29 |