코딩테스트/Python 개념

[Python] enumerate() 함수

박소민 2022. 3. 27. 14:55
enumerate() 함수
  • enmerate( list ):
    • 인덱스와 원소로 이루어진 tuple로 변환해줌
    • 인자로 넘어온 목록을 기준으로 인덱스와 원소를 차례대로 접근하게 해주는 반복자(iterator) 객체를 반환해주는 함수
    • (index, value) 

 

  • 인덱스와 원소를 각각 다른 변수에 할당하고 싶다면 인자 풀기(unpacking)
num=['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
  answer=s
  for i, letter in enumerate(num):
    answer=answer.replace(letter, str(i)) #replace함수는 string으로만 변경 가능: str(i)

 

  • 시작 인덱스 변경
    • 루프 인덱스를 0이 아니라, 다른 범위부터 시작하고 싶을 때
    • enumerate( list, start=시작하고 싶은 인덱스)

 

  • 📍for idx,r in enumerate(result[::-1])
    • 맨 마지막 인덱스부터 불러오더라도 출력되는 인덱스는 0부터
    • → 구하려는 인덱스 값: len(result)-1-idx
result=[1,2,3,4,5]
for idx,r in enumerate(result[::-1]):
	print(idx,r)
#결과
0 5
1 4
2 3
3 2
4 1

 

2차원 리스트에 enumerate() 적용
board = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]
  • 일반적으로 2차원 리스트의 인덱스 row,col 구할 경우
for r in range(len(board)):
	for c in range(len(board[r])):
		print(r, c, board[r][c])
        
#결과
0 0 A
0 1 B
0 2 C
1 0 D
1 1 E
1 2 F
2 0 G
2 1 H
2 2 I
  • enumerate() 함수로 2차원 리스트 인덱스 row, col 구하는 경우
for r, row in enumerate(board):
	for c, letter in enumerate(row):
		print(r, c, letter)
        
#결과
0 0 A
0 1 B
0 2 C
1 0 D
1 1 E
1 2 F
2 0 G
2 1 H
2 2 I

참고) https://www.daleseo.com/python-enumerate/