python/문법 3

enumerate

enumerate()는 '열거하다'는 뜻의 함수로, 순서가 있는 자료형(list,set,tuple등)을 인덱스를 포함한 enumerate 객체로 리턴한다. 사용 방법은 다음과 같다. a=[6,3,7,1,2,3] b=enumerate(a) print(b) print(list(b)) 이처럼 list()로 결과를 추출할 수 있는데, 인덱스를 자동으로 부여해주기 때문에 매우 편리하게 활용할 수 있다. 그렇다면 a=['a1','b2','c3']가 있을 때 이 리스트의 인덱스와 값을 함께 출력하려면 어떻게 해야 할까? a=['a1','b2','c3'] for i,v in enumerate(a): print(i,v)

python/문법 2021.08.15

제너레이터(Generator)

제너레이터는 루프의 반복 동작을 제어할 수 있는 루틴 형태를 말한다. 예를 들어 임의의 조건으로 숫자 1억 개를 만들어내 계산하는 프로그램을 작성한다고 가정해보자. 이 경우 제너레이터가 없다면 메모리 어딘가에 만들어낸 숫자 1억 개를 보관하고 있어야 한다. 그러나 제너레이터를 이용하면 단순히 제너레이터만 생성해두고 필요할 때 언제든 숫자를 만들어낼 수 있다. 이때 yied 구문을 사용하면 제너레이터를 리턴할 수 있다. 기존의 함수는 return 구문을 맞닥뜨리면 값을 리턴하고 모든 함수의 동작을 종료한다. 그러나 yield는 제너레이터가 여기까지 실행 중이던 값을 내보낸다는 의미로, 중간값을 리턴한 다음 함수는 종료되지 않고 계속해서 맨 끝에 도달할 때까지 실행된다. 물론 다음 코드의 경우처럼 while..

python/문법 2021.08.15