python for 문 : 파이썬답게 만드는 enumerate 함수

python for 문 : 파이썬답게 만드는 enumerate 함수

단순 반복작업을 해야 할 경우 코딩이 필요합니다. 컴퓨터는 반복작업을 위해 만들어진 물건이기 때문인데요. python에서는 for 문이 단순 반복작업을 담당해줍니다. 이번 포스팅에서는 python for 문을 좀 더 파이썬답게 쓰기 위해 인덱스도 함께 처리하는 enumerate() 함수에 대해 알아보겠습니다.


글의 순서

python for 문에서 enumerate() 함수 사용
python for 문에서 enumerate() 함수를 사용하는 것이 더 파이썬다운 이유
python for 문 겹쳐 쓰기 : enumerate 함수를 이용한 행렬 처리


python for 문에서 enumerate() 함수 사용

파이썬 for 문의 기본형태는 for 변수 in 입니다. 이처럼 for 문에서는 in이 쓰이는데, in바로 뒤에 반복 회수를 지정할 수 있습니다. in 뒤에는 리스트 [ ]나 range() 함수가 사용되는데, 리스트나 range() 대신 enumerate() 함수를 사용하면 인덱스까지 처리할 수 있습니다.

실습코드01에 반복회수를 리스트로 정하는 python for 문을 나타내었습니다.

실습코드02에는 python for 문의 in 다음에 enumerate() 함수를 사용한 예제를 보여주고 있습니다. enumerate() 함수의 인자로는 반복 회수를 지정하는 list와 index 시작점을 넘겨줄 수 있습니다. index 시작점을 넘겨주지 않으면 index는 기본값인 0부터 시작합니다. 실습코드02-2부분은 enumerate() 함수에 index를 2부터 시작하라고 넘겨준 경우입니다.

실습코드03에는 enumerate() 함수의 index를 좀 더 직관적으로 확인할 수 있도록 f-string을 이용하여 딕셔너리 형태로 출력하였습니다.



python for 문에서 enumerate() 함수를 사용하는 것이 더 파이썬다운 이유

대부분의 코딩 언어 들은 i, j, k와 같은 인덱스(index) 변수를 증가시키면서 반복문을 실행시킵니다. 파이썬에서도 이처럼 인덱스 변수를 별도로 지정해놓고 반복문을 돌릴 수도 있는데요. 실습코드04의 경우와 같이 인덱스 변수를 별도로 변화시켜가면서 돌리는 것도 똑같은 결과를 줍니다.

그런데, 이 경우 indx 라는 변수가 for 문이 종료된 후에도 메모리에 남아 있기 때문에 불필요한 공간을 차지하게 됩니다. enumerate() 함수를 사용하면 이런 불필요한 요소를 제거할 수 있기 때문에 더 파이썬답다고 하는 것입니다.


python for 문 겹쳐 쓰기 : enumerate 함수를 이용한 행렬 처리

수학분야 중 반복문을 많이 사용해야 하는 분야가 행렬(matrix)을 다루는 선형대수분야입니다. 행렬은 수나 식을 직사각형 모양으로 배열한 것입니다. 가로줄을 행(row), 세로줄을 열(column)이라고 합니다. 또한 행렬을 구성하는 각각의 값은 행렬 원소(entry)라고 합니다.

여기서는 python for 문의 enumerate() 함수를 행렬에 적용하여 더 이해해 보고자 합니다. 지난 포스팅에서 구구단을 출력할 때, 중첩 for 문을 사용했는데요. 행과 열에 대해 반복해야 하므로 행렬을 다룰때도 기본적으로 for 문을 중첩해서 써야 합니다.

실습코드05는 행렬을 만든 후 각 행렬 원소를 순차적으로 쓰는 파이썬 코드입니다. 실습코드05에서는 3행 3열의 행렬(matrix)을 만들었습니다. 행렬의 각 원소를 부를 때는 행과 열의 위치로 나타냅니다. 예를 들어 실습코드의 matrix에서 1행 1열의 원소는 11, 3행 2열의 원소는 32가 됩니다. 행렬에서 행과 열의 시작점이 1이기 때문에 enumerate() 함수의 인덱스 시작을 1로 설정하였습니다. 만약 인덱스 시작을 별도로 지정해 주지 않았다면 index는 0부터 시작합니다.


마치며 …

이번 포스팅에서도 python for 문을 통해 컴퓨터에게 단순 반복 작업을 시키는 연습을 해보았습니다. python for 문은 for 변수 in 의 형태로 사용됩니다. in 뒤에는 리스트 [ ]나 range() 함수가 사용되는데, 리스트나 range() 대신 enumerate() 함수를 사용하면 인덱스까지 처리할 수 있습니다.

대부분의 코딩 언어 들은 i, j, k와 같은 인덱스(index) 변수를 증가시키면서 반복문을 실행시키는데, for 문이 끝난 후에도 index가 메모리의 한 부분을 차지하게 됩니다. 파이썬 for 문에 쓰이는 enumerate() 함수는 이처럼 불필요한 요소를 제거할 수 있기 때문에 for 문에서 enumerate() 함수로 index를 처리하는 것이 더 파이썬답다고 하는 것입니다. python for 문을 따라하다가 나도 모르는 사이에 익숙해지셨길 바랍니다.

 

 

함께 참고하면 더 좋은 글 :
python for 문 연습
파이썬 프로그래밍 시작 (6) 반복문
파이썬 프로그래밍 시작 (7) 반복문과 무한루프
파이썬 데이터 분석! 데이터 분석을 위한 코딩언어 파이썬
파이썬 IDE 설정. 비주얼 스튜디오 코드(Visual Studio Code, VS code)
머신러닝 수학 : 데이터 벡터화


참고자료

Python Tutorial4. 기타 제어 흐름 도구

Leave a Comment