‘기초~중급 Python 문법’ 정모(2022.03.04)

최근에 기초~중급 수준의 내용으로 정모를 가졌어요. 물론, 저희 60coding은 클래스 모임이 아닌 코딩 공부(주제는 미리 공지) 리뷰와 잡담 위주의 모임을 추구합니다. 60Coding의 최민진 멘토님이 주관한 모임이었습니다. 모임에는 현업 종사자인 분도 참석해주셨고 아래와 같은 내용을 다뤘어요. 정말 즐거운 시간이었어요!

Iterable

  • Iterable은 순회할 수 있는 모든 객체를 가리킨다. 다른 말로 하면 파이썬에서 for 문의 in 키워드 뒤에 올 수 있는 모든 값은 Iterable이다. 그러면 list, tuple, set, dict는 말할 것도 없고 문자열, 파일 등도 Iterable이라고 할 수 있다.

Iterator

  • 요소가 복수인 컨테이너(리스트, 튜플, 셋, 사전, 문자열)에서 각 요소를 하나씩 꺼내 어떤 처리를 수행할 수 있도록 하는 간편한 방법을 제공하는 객체
  • 반환할 수 있는 마지막 값까지 원소를 하나씩 반환

Generator

  • iterator의 한 종류로, 하나의 요소를 꺼내려고 할 때마다 요소 generator를 수행하는 타입으로, Python에서는 yield문을 통해 구현하는 것이 보통
  • 여러 개의 데이터를 미리 만들어 놓지 않고 필요할 때마다 즉석해서 하나씩 만들어낼 수 있는 객체

Comprehension

Generator Comprehension

  • 리스트 표현식(list comprehension)과 사용 방법이 매우 유사한데요. 단지 차이점이라고 하면 리스트 표현식은 대괄호를 사용하고 제너레이터 표현식은 소괄호를 사용

Comprehension 실무 예제

if 'personalTags' in result and result['personalTags']:
	keyword.extend([personal for personal in result['personalTags']])
if 'featureTags' in result and result['featureTags']:
	keyword.extend([feature for feature in result['featureTags']]) 
condition = {'noteInfo.id': {'$in': [post['post_id'] for post in posts]}}
  • c.f. if else 삼항연산자
condition = _get_condition() if not is_brand else _get_brand_condition()

Yield

  • yield 키워드를 사용하면 제너레이터를 반환
  • 메모리 효율 측면에서도 이 두가지 방식은 큰 차이를 보이는데요. return 키워드를 사용할 때는 모든 결과 값을 메모리에 올려놓아야 하는 반면에, yield 키워드를 사용할 때는 결과 값을 하나씩 메모리에 올려놓습니다.
  • yield from를 사용하면 리스트를 바로 제너레이터로 변환할 수 있음.

Enumerate & Zip

More from author

Related posts

60코딩 커뮤니티spot_img

Latest posts

MLP를 활용한 로또 예측 프로그램

지난 포스팅에서는 회귀 분석 이론을 바탕으로 랜덤 포레스트라는 모델을 사용해서 로또 예측 프로그램을 만들어봤습니다. 이번 포스팅에서는 MPL(다중 퍼셉트론)을 활용해서 로또 예측 프로그램을 역시 심심풀이로...

회귀 분석을 활용한 로또 예측 프로그램

import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestRegressor # CSV 파일에서 과거 로또 번호 데이터 로드 (예: lotto_history.csv) # CSV 파일에는...

파이썬 람다(Lambda) & Map 함수 #2

지난 콘텐츠에서는 람다(Lambda)와 Map을 살짝 살펴봤어요. 람다와 맵은 같이 사용하는 경우가 많고, 또 다른 Reduce() 역시 람다, 맵 함수와 같이 많이 사용하게 됩니다. 우선...