전체 글
[Effective Python] BETTER WAY 9 - for나 while 루프 뒤에 else 블록을 사용하지 말라
파이썬에서는 대부분의 다른 프로그래밍 언어와 달리 루프에 else 블록을 추가할 수 있다. for i in range(3): print('Loop', i) else: print('Else block!') >>> Loop 0 Loop 1 Loop 2 Else block! else 블록은 루프 안에서 break 문을 사용하면 실행되지 않는 방식으로 진행된다. for i in range(3): print('Loop', i) if i == 1: break else: print('Else block!') >>> Loop 0 Loop 1 일반적으로 비슷한 try/except/else와 같은 구문에서는 else가 '처리할 예외가 없는 경우에 이 블록을 실행하라'는 뜻이다. 따라서 가독성 측면에서 명확하지 않기 때문에..
[Effective Python] BETTER WAY 7 - range보다는 enumerate를 사용하라
1. range 보통 루프가 필요할 때 range를 많이 사용한다. flavor_list = ['바닐라', '초콜릿', '피칸', '딸기'] for flavor in range(len(flavor_list)): flavor = flavor_list[i] print(f'{i + 1}: {flavor}') >>> 1: 바닐라 2: 초콜릿 3: 피칸 4: 딸기 위 코드는 다소 투박해 보인다. list의 길이를 알아야 하고, 인덱스를 사용해 배열 원소에 접근해야 한다. 2. enumerate enemerate는 이터레이터를 지연 계산 제너레이터(lazy generator)로 감싼다. enumerate는 루프 인덱스와 이터레이터의 다음 값으로 이뤄진 쌍을 넘겨준다(yield). enumerate가 넘겨주는 각 상..
[Effective Python] BETTER WAY 6 - 인덱스를 사용하는 대신 대입을 사용해 데이터를 언패킹해라
1. 인덱스 사용 vs 언패킹 튜플에 있는 값을 접근할 때 다음과 같이 인덱스를 사용할 수 있다. item = ('호박엿', '식혜') first = item[0] second = item[1] print(first, '&', second) >>> 호박엿 & 식혜 다만, 여러줄로 이루어져 있어 복잡하다. 그래서 다음의 코드처럼 언패킹을 사용하면 한 문장 안에서 여러 값을 대입할 수 있다. item = ('호박엿', '식혜') first, second = item # 언패킹 print(first, '&', second) 2. for 문에서의 활용 또한, 언패킹은 for 루프에서 쓸모가 있다. 다음은 기존 코드이다. snacks = [('베이컨', 350), ('도넛', 240), ('머핀', 190)] f..