/ PYTHON

Pythonic Thinking(3) 파이썬 효율적으로 사용하기

첫번째 챕터 Pythonic Thinking의 7-9번 팁을 간단하게 요약해보자.

  1. Range 대신 Enumerate를 쓰자.
    • 간결하게 iterator와 index를 이용할 수 있다.
    • range를 이용해서 loop를 돌면서 indexing을 하기보다 enumerate를 사용하자.
    • enumerate의 두번째 파라미터를 이용해서 0 이외의 숫자부터 indexing할 수 있다. 아래 예시
      for i, flavor in enumerate(flavor_list, 1):
       printf(f'{i}: {flavor}')
      
  2. Iterator들을 병렬적으로 처리하기 위해 zip을 사용하자.
    • enumerate와 마찬가지로 zip이라는 기본 함수를 사용해서 여러 iterator들을 병렬적으로 처리할 수 있다.
    • zip은 iterator의 다음 값에 해당하는 값들을 tuple의 형태로 그때 그때 하나씩 생성한다(lazy generator). 따라서 메모리 걱정 없이 무한정 긴 iterator를 처리할 수 있다.
    • 비교하는 두 iterator의 길이가 다르면 작은 쪽까지만 tuple을 생성하고 멈춘다.
    • itertools 모듈의 zip_longest를 사용하면 길이가 긴 iterator에 맞춰서 tuple을 생성할 수 있다(짧은 쪽의 값엔 None이 default로 들어간다).
  3. for, while문 다음에는 else 사용을 지양하자.
    • for나 while문 뒤에 else가 오게되면 어떻게 되는지 알자.
    • break를 사용하게 되면 뒤에 else가 실행되지 않는다.
    • 따라서 헷갈리고 비직관적인 반복문 뒤 else 사용을 지양하자.

출처: Slatkin, B. (2020). Effective Python: 90 specific ways to write better Python. USA: Addison-Wesley.