goodthings4me.tistory.com
■ 파이썬의 제너레이터(generator)로 생성된 객체는 iterator 객체이며, next() 함수를 호출하여 값을 하나씩 추출한다.
'yield'가 하나라도 있으면 제너레이터가 되고, yield는 return 역할을 한다.
제너레이터 사용 시 장점은 메모리 공간의 효율성에 있다. 즉, 제너레이터 객체는 반환값을 미리 만들어서 저장해 두지 않는다.
def gen_num(): # 제너레이터 함수 정의
print('first number')
yield 1
print('second number')
yield 2
print('third number')
yield 3
g = gen_num() # 제너레이터 객체 생성, 한 문장도 실행 안됨
print(type(g)) # <class 'generator'>
# next() 호출 시 yield 부분까지 실행 (여러 개 있을 경우, 해당 순서까지 실행)
print(next(g)) # first number / 1
print(next(g)) # second number / 2
print(next(g)) # third number / 3
#print(next(g)) # StopIteration
# 제너레이터 함수 내 for문 사용
def gpow(s):
for i in s:
yield i ** 2
lst = [2, 5, 9]
st = gpow(lst)
print(st) # <generator object gpow at 0x000001DA24658B30>
print(next(st)) # 4
print(next(st)) # 25
print(next(st)) # 81
#print(next(st)) # StopIteration
for i in st:
print(i) # iterator 객체에 대해 for문 사용 (전체 출력됨)
# 4
# 25
# 81
# 제너레이터 함수 내 for 문 대신 yield from 사용 (파이썬 3.3 이상)
def gpow2(s):
yield from s
lst2 = [3, 6, 9]
st2 = gpow2(lst2)
print(next(st2)) # 3
print(next(st2)) # 6
print(next(st2)) # 9
#print(next(st2)) # StopIteration
# 제너레이터 표현식(제너레이터 객체 생성 방법) - 리스트 컴프리헨션과 유사
lst_c = [2 * i for i in range(1, 10)] # 리스트 컴프리헨션
print(lst_c) # [2, 4, 6, 8, 10, 12, 14, 16, 18]
gen_c = (2 * i for i in range(1, 10)) # 제너레이터 표현식
print(gen_c) # <generator object <genexpr> at 0x000001DA2467AE40>
for i in gen_c:
print(i, end=' ') # 2 4 6 8 10 12 14 16 18
tp_c = tuple(2 * i for i in range(1, 10)) # 튜플 컴프리헨션
print(tp_c) # (2, 4, 6, 8, 10, 12, 14, 16, 18)
# 제너레이터 표현식의 기호는 () 로 표시
# 튜플 컴프리헨션은 앞에 tuple이라 붙인다. tuple()
[참고 자료] 윤성우의 열혈 파이썬 중급편
블로그 인기글
Windows 10 탐색기 느려지는 증상과 해결하는 방법
잘 작동하던 Windows 10 탐색기가 갑자기 느려지는 증상이 발생했을 때 어떻게 조치를 하는지 구글에서 찾아보니 많은 해결책들이 있었으나 어떤 것이 정확한 해결책인지는 알 수가 없었다. 그래서 해결방법이라고 제시한 것들을 정리해 보았다. 윈도우 탐색기가 느려지는 증상 해결 방법 어느 순간부터 응용프로그램(VS Code 등)에서 폴더 열기나 파일 불러오기를 했을 때 검색 팝업창이 안 뜨거나 열리는 시간이 엄청 느려지는 증상과, 더불어서 탐색기도 실행이 많이 느려지는 증상이 있었다. 기존에 사용하던 VS Code에 openpyxl 설치 후 실행이 느려지는 증상이 발생하더니 윈도우10 탐색기도 느려져서 사용할 수가 없었다. 노트북에 OS(Windows10)를 설치한지 1년이 다 되어가긴 했지만, 1개월 전..
goodthings4me.tistory.com
[국세청] 현금영수증가맹점으로 가입바랍니다. 메시지 해결방법(개인사업자)
▶ 현금영수증 가맹점 가입 메시지를 받고... 온라인 쇼핑몰 사업을 시작하려고 사업자등록증을 발급받고 난 후 얼마 안 있어서 국세청으로부터 어느 시점까지 '현금영수증 가맹점'으로 가입하라는 문자메시지가 받았었다. 그 메시지 기한이 오늘 도래했는데, 인터넷에서 찾아보니 홈택스에서 현금영수증 발급 사업자 신청을 할 수가 있었다. [관련내용] 홈>국세정책/제도>전자(세금)계산서/현금영수증/신용카드>현금영수증∙신용카드>가맹점가입 ▶ 홈택스 사이트에서 신청하는 절차는 다음과 같다. 우선, 홈택스에 로그인을 해야 합니다. 세상이 좋아져서 공인인증서 없이도 손쉽게 간편인증 로그인이 가능하다. 여러 인증방법 중 카카오톡 인증이 가장 편리한 거 같다. 간편인증 로그인 후 상단 '조회/발급' 탭 클릭 후 '현금영수증>현금..
goodthings4me.tistory.com
폐업 신고 절차와 부가가치세 신고하는 방법
폐업 신고 시 세무서 안 가고 온라인으로 신고하는 방법인 '국세청 홈택스를 이용하여 폐업 신고하는 절차와 폐업 후 해야 하는 부가가치세 신고, 인건비 저리, 종합소득세 신고 등에 대해 포스팅합니다. 폐업 신고 시 홈택스 이용하는 방법과 부가가치세 등 신고 절차 여러가지 사유로 폐업을 해야 할 때, 예전에는 세무서를 방문해야 했지만 국세청 홈택스가 생긴 이후에는 사업자 등록이나 폐업 등을 인터넷으로 할 수가 있게 되었습니다. 특히, 코로나 시국인 요즘은 더더욱 온라인 신청 업무가 더 활성화되었죠. 폐업을 한다는 것 자체가 우울한 일인데, 발품을 파는 것보다는 커피 한잔 하면서 인터넷으로 간단하게 처리하는 게 좋을 듯하여 그 절차를 올려봅니다. 폐업은 폐업 신고와 함께 폐업 후 절차까지 모두 마쳐야 불이익이..
goodthings4me.tistory.com
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
[python] 주사위 게임 (0) | 2020.08.23 |
---|---|
[python] 패킹(packing), 언패킹(unpacking) 그리고 가변인자 (0) | 2020.08.23 |
[python] 소수(素數, prime number) 구하기 (0) | 2020.08.21 |
[python] 리스트 컴프리헨션(List Comprehension) & 이터러블(iterable) 객체 (0) | 2020.08.21 |
[python] n부터 시작하여 m까지 연속하는 숫자의 합은? (0) | 2020.08.20 |
댓글