[Python] enumerate()

지우개·2024년 3월 6일

Python

목록 보기
2/3

enumerate()

인덱스(index)와 원소를 동시에 접근하면서 루프를 돌림


  • 1차원 리스트 사용
lst = ['AA', 'BB', 'CC']

for entry in enumerate(['A', 'B', 'C']):
	print(entry)
    
for entry in enumerate(lst):
	print(entry)

결과

(0, 'A')
(1, 'B')
(2, 'C')

(0, 'AA')
(1, 'BB')
(2, 'CC')

  • index와 원소를 각각 다른 변수에 할당
lst = ['AA', 'BB', 'CC']

for i, value in enumerate(['A', 'B', 'C']):
	print(i, value)
    
for i, value in enumerate(lst):
	print(i, value)

결과

0 A
1 B
2 C

0 AA
1 BB
2 CC

  • 시작 index값 변경
lst = ['AA', 'BB', 'CC']

for i, value in enumerate(['A', 'B', 'C'], start=101):
	print(i, value)
    
for i, value in enumerate(lst, start=101):
	print(i, value)

결과

101 A
102 B
103 C

101 AA
102 BB
103 CC

  • 2차원 리스트에서 enumerate 사용안하고 index와 원소값 가져오기
lst = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]

for r in range(len(lst)):
	for c in range(len(lst[r])):
		print(r, c, lst[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

  • 2차원 리스트에서 enumerate 사용해서 index와 원소값 가져오기
lst = [['A', 'B', 'C'], ['D', 'E', 'F'], ['G', 'H', 'I']]

for r, row in enumerate(lst):
	for c, value in enumerate(row):
		print(r, c, value)

결과

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

  • 응용 : for문과 enumerate로 2차원 리스트 초기화
lst = ['A', 'B', 'C']

lst2 = [[i, value] for i, value in enumerate(lst)]

print(lst2)

결과

[[0, 'A'], [1, 'B'], [2, 'C']]

  • 응용 : for문과 enumerate로 딕셔너리 초기화
lst = ['A', 'B', 'C']

dic = {i:value for i, value in enumerate(lst)}

print(dic)

결과

{0: 'A', 1: 'B', 2: 'C'}

이를 활용한 문제
백준 18870번 - 좌표 압축

import sys

n = int(sys.stdin.readline())
lst = list(map(int, sys.stdin.readline().split()))

sorted_lst = sorted(list(set(lst)))
dic = {x:idx for idx, x in enumerate(sorted_lst)}

for i in lst:
    print(dic[i], end=" ")

0개의 댓글