본문 바로가기
Programming/- Python

[Python] 반복문 사용 : range / enumerate

by 완벽주의탈피 2022. 5. 12.

파이썬의 반복문에서 인덱스를 사용하는 방법이 두 가지 있다.

range가 더 쉽지만, 복잡한 코드일수록 파이썬만의 기능인 enumerate를 사용하는 것이 좋다고 한다.

 

 


 

반복문 (for문)


  • for 원소 in 목록: / for 원소 in reversed 목록:
  • 목록에는 반복 가능한 객체 사용 : list, tuple, string, iterator 등

 

# for문

for letter in 'krapeun':
	print(letter)
    
# k
# r
# a
# p
# e
# u
# n

 

이처럼 원소를 변수로 정의하고 바로 사용이 가능하지만, 인덱스에 대한 정보가 없다.

이를 range를 사용해 인덱스 값과 함께 나타낼 수 있다.

 

 

인덱스 사용 range


  • for 원소 in range(start, end, step):
  • end 값은 포함되지 않음
  • default : start = 0, step = 1
  • step 값이 음수라면 start > end여야 함 (reverse)

 

# for문 (range 사용)

mylist = ['k', 'r', 'a', 'p', 'e', 'u', 'n']

for i in range(0, len(mylist), 2):
	print(i, mylist[i])
    
# 0 k
# 2 a
# 4 e
# 6 n

 

하지만 이렇게 하면 복잡한 코드에서는 인덱스가 헷갈릴 수도 있고, 파이썬의 기능을 사용하지 못하게 된다.

따라서 enumertae를 사용해 자동으로 인덱스를 반환하는 방법을 사용하는 것이 좋다.

 

 

인덱스 사용 enumerate


  • for 원소 in enumerate(목록, start = n):
  • (인덱스, 원소) 튜플 반환

 

# for문 (enumerate 사용)

mylist = ['k', 'r', 'a', 'p', 'e', 'u', 'n']

for mlist in enumerate(mylist):
	print(mlist)
    
# (0, k)
# (1, r)
# (2, a)
# (3, p)
# (4, e)
# (5, u)
# (6, n)

for i, mlist in enumerate(mylist):
	print(i, mlist)
    
# 0 k
# 1 r
# 2 a
# 3 p
# 4 e
# 5 u
# 6 n

 

enumerate는 인덱스와 원소를 튜플 형태로 반환하기 때문에 unpacking을 통해 두 개의 변수에 할당하여 사용한다.

댓글