enumerate
함수는 순서가 있는(iterable) 자료형(리스트, 튜플, 문자열 등)을 입력으로 받아,
각 원소와 그 인덱스를 포함하는 enumerate 객체를 반환하는 파이썬의 내장 함수
예시
my_list = ['apple', 'banana', 'cherry']
for index, value in enumerate(my_list):
print(f"Index: {index}, Value: {value}")
리스트 생성 후 apple,banna,cherry 입력
enumerate는 주로 for문과 같이 사용된다.
format함수를 사용하여 출력해보자
Index: 0, Value: apple
Index: 1, Value: banana
Index: 2, Value: cherry
위의 for문에서 index,value를 반복시켰다.
순서대로 0,1,2 가 출력되고 리스트 내 0번 요소부터 차례대로 출력되는 것을 확인할 수 있다.
enumerate 함수는 기본적으로 인덱스를 0부터 시작하지만, start 매개변수를 사용하여 시작 인덱스를 변경할 수도 있다!
풀고자 한 문제
test_count = int(input()) results = [] for _ in range(test_count): test1, test2 = input().split() result = int(test1)+int(test2) results.append(result) for result in results: print("Case #{}: {}+{} = {}".format(test_count,test1,test2,result))
애를 먹었던 부분이다.
출력을 하면 케이스번호가 1,2,3 순으로 시작하는 것이 아닌 test_count(테스트 개수)로 출력됨을 알 수 있다.
이걸 수정하고자 enumerate 함수를 활용해보았다.
test_count = int(input())
results = []
for i in range(test_count):
test1, test2 = map(int, input().split())
result = test1 + test2
results.append((test1, test2, result))
for i, (test1, test2, result) in enumerate(results, start=1):
print("Case #{}: {}+{} = {}".format(i, test1, test2, result))
원하는대로 잘 출력되는 것을 확인할 수 있었다.
map함수와 enumerate함수를 사용하여 더 간단하게 코드를 작성할 수 있었다.
- 튜플 사용: 수정된 코드에서는 results 리스트에 각 테스트 케이스마다 (test1, test2, result)의 튜플이 저장됨. 이렇게 하면 각 테스트 케이스의 입력값을 묶어서 저장할 수 있음
- 루프 변수 할당: 수정된 코드에서 enumerate 함수의 루프에서 (test1, test2, result)의 튜플을 풀어서 변수에 할당. 이로써 각 테스트 케이스에서의 test1과 test2 값을 가져와서 출력에 사용할 수 있게 됨
사실 이것도 하드코딩이었다..
계속 틀려서 다른 블로거분 포스팅을 참고했는데 훨씬 쉬웠다...후
'공부 > python' 카테고리의 다른 글
혼자 공부하는 데이터 분석 1주차: 데이터 분석을 시작하며 (0) | 2024.07.07 |
---|---|
알고리즘 BFS(너비우선탐색) (0) | 2023.11.24 |
IQR 이상치 (0) | 2023.11.04 |
ImportError: cannot import name 'Int64Index' from 'pandas' (0) | 2023.11.04 |
계속 혼동 된다.. map 함수 (0) | 2023.10.23 |