공부/python

enumerate

무른2 2023. 11. 23. 23:33

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함수를 사용하여 더 간단하게 코드를 작성할 수 있었다.

  1. 튜플 사용: 수정된 코드에서는 results 리스트에 각 테스트 케이스마다 (test1, test2, result)의 튜플이 저장됨. 이렇게 하면 각 테스트 케이스의 입력값을 묶어서 저장할 수 있음
  2. 루프 변수 할당: 수정된 코드에서 enumerate 함수의 루프에서 (test1, test2, result)의 튜플을 풀어서 변수에 할당. 이로써 각 테스트 케이스에서의 test1과 test2 값을 가져와서 출력에 사용할 수 있게 됨

 

사실 이것도 하드코딩이었다..

계속 틀려서 다른 블로거분 포스팅을 참고했는데 훨씬 쉬웠다...후 

 

 

백준 11022번 [파이썬] A+B - 8

[Python] 백준 알고리즘 온라인 저지 11022번 : A+B - 8 Python3 코드 t = int(input()) for x in range(1, t+1): # 1부터 t까지 a, b = map(int, input().split()) print(f'Case #{x}: {a} + {b} = {a+b}') Python3 코드 풀이 1. 전체적인 코드

ooyoung.tistory.com