두 가지 방법이 있을 수 있다.
i = 0
for letter in ['a', 'b', 'c']:
print(i, letter)
i += 1
인덱스를 출력할 수는 있지만, 반복문 종료 이후에도 i
변수가 네임스페이스에서 사라지지 않기 때문에 적절하지 않다.
letters = ['a', 'b', 'c']
for i in range(len(letters)):
print(i, letter[i])
내가 가장 많이 사용하는 방법이다. 그러나 파이썬 커뮤니티에서는 이 방법이 파이썬답지 않아 보인다고 한다.
파이썬답게 인덱스와 원소에 동시에 접근할 수 있는 방법은 무엇일까?
enumerate()
를 이용하면 된다. list등 for 문의 in 뒤에 오는 객체를 enumerate()
함수로 감싸 주면 된다.
for entry in enumerate(['a', 'b', 'b']):
print(entry)
# 출력 결과 - (인덱스, 원소) 형태의 튜플을 반환한다.
(0, 'A')
(1, 'B')
(2, 'C')
for i, letter in enumerate(['A', 'B', 'C']):
print(i, letter)
# 출력 결과 - 변수 두 개에 각각 인덱스와 원소를 할당한다.
0 A
1 B
2 C
for i, letter in enumerate(['A', 'B', 'C'], start=1):
print(i, letter)
# 인덱스가 1부터 출력된다.