PYTHONIC Iterable 객체는 이렇게 다루라!

Lightman·2021년 6월 29일
1

CS: PYTHON🐍 & Ⓡ

목록 보기
8/14
post-thumbnail

Effective Python 2nd 이펙티브 파이썬 : 파이썬 코딩의 기술의 BETTER WAY(6,7,8) 요약본입니다.


🛴Iterable객체 인덱스로 다루지 마라!

1. 하나의 Iterator

1.1. CASE①: [index, 값] ⇒ UNPACKING

> Iterator로 부터 값만 필요한 경우

  • 예제1
item = ('파전', '막걸리')
first, second = item
  • 예제 2
def bubblesort(a):
	for idx in range(len(a)-1) :
    	for i in range(len(a) - 1 - idx):
        	if a[i] < a[i+1] :
            	a[i], a[i+1] = a[i+1], a[i]
  • 결론 : UNPACKING을 통해 인덱스 사용을 피할 수 있고, 더 파이썬답게 쓸 수 있다.

1.2. CASE②: [index, 값] ⇒ enumerate

> Iterator로 부터 index와 값이 필요한 경우

foods = [('신라면',350), ('마카롱',800), ('하와이안 피자', 0)]
for rank, (name, calories) in enumerate(foods, 1):
	print(f'#{rank}: {name}{calories} 칼로리입니다.'

2. 여러 Iterators

2.1. CASE①: [index, 값, 값] ⇒ zip

> 여러 Iterator로 부터 값들이 필요한 경우

names = ['이지은', '이승윤', '공유']
counts = [len(a) for a in names]

for name, count in zip(names, counts):
	if count > max_count:
    	longest_name = name
        max_count = count
참고: from itertools import zip_longest( a, b )

😎끝.

profile
현직 데이터 분석가 / 데이터 과학의 정도를 따라 🚲 / About DEV DA ML

0개의 댓글