내장 함수 연습: enumerate()
이번 연습에서는 Python의 내장 함수 enumerate() 사용법을 익혀 봅니다. 이 함수는 인덱스가 붙은 리스트를 만들 때 유용해요. 예를 들어, 여러분이 주최한 파티에 사람들이 도착한 순서대로 정렬된 리스트가 있다고 해볼게요(제리가 가장 먼저 도착했고, 그다음이 크레이머 등):
names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']
각 사람의 도착 순서를 나타내는 인덱스를 붙이고 싶다면, 다음과 같은 for 루프를 쓸 수도 있어요:
indexed_names = []
for i in range(len(names)):
index_name = (i, names[i])
indexed_names.append(index_name)
[(0,'Jerry'),(1,'Kramer'),(2,'Elaine'),(3,'George'),(4,'Newman')]
하지만 이것이 가장 효율적인 방법은 아니에요. 이제 enumerate()를 사용해 더 효율적으로 만드는 방법을 살펴보죠.
이 연습은 강의의 일부입니다
효율적인 Python 코드 작성
연습 안내
for i in range(len(names))대신, 인덱스 변수로i, 이터레이터 변수로name을 사용하고enumerate()를 써서 for 루프를 수정하세요.- 이전 for 루프를
enumerate()와 리스트 컴프리헨션으로 다시 작성해 새 리스트indexed_names_comp를 만드세요. names에enumerate()를 적용해 생성한 enumerate 객체를 별표(*)로 언패킹하여 또 다른 리스트(indexed_names_unpack)를 만드세요. 이번에는enumerate()의 시작 인덱스를 0이 아닌 1로 설정하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
# Rewrite the for loop to use enumerate
indexed_names = []
for ____,_____ in ____(names):
index_name = (i,name)
indexed_names.append(index_name)
print(indexed_names)
# Rewrite the above for loop using list comprehension
indexed_names_comp = [(____,____) for i,name in ____(names)]
print(indexed_names_comp)
# Unpack an enumerate object with a starting index of one
indexed_names_unpack = [____(names, ____)]
print(indexed_names_unpack)