파이썬의 반복문에서 인덱스를 사용하는 방법이 두 가지 있다.
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을 통해 두 개의 변수에 할당하여 사용한다.
'Programming > - Python' 카테고리의 다른 글
[Python] Stack (스택) 기본 사용법 (0) | 2022.06.20 |
---|---|
[Python] Set (집합) : 중복 없는 자료형 (0) | 2022.05.25 |
[Python] Collections : 개수 세기 (Counter) (0) | 2022.05.10 |
[Python] 리스트 정리 (index / append / del / insert / remove) (0) | 2022.04.22 |
[Python] map 함수 사용법 (0) | 2022.04.19 |
댓글