1. Python 3을 사용해라
    2020.1.1. Python 2 지원 종료

  2. 최소 요구되는 Python 버전을 확인해라

    if not sys.version_info > (2, 7):
    # berate your user for running a 10 year
    # python version
    elif not sys.version_info >= (3, 5):
    # Kindly tell your user (s)he needs to upgrade
    # because you're using 3.5 features
  3. IPython을 사용해라
    %cd, %edit, %env, %pip install [pkgs], %time, %timeit
    pip3 install ipython

  4. 리스트 표현

    [expression for item in list if conditional]
    mylist = [i for i in range(10)]
    print(mylist)
    # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    squares = [x**2 for x in range(10)]
    print(squares)
    # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    filtered = [i for i in range(20) if i%2==0]
    print(filtered)
    # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
  5. 생성한 오브젝트의 메모리 사용량을 체크

     import sys
     mylist = range(0, 10000)
     print(sys.getsizeof(mylist))
     #48(실제 메모리 사용량이 아니라 mylist를 할당한 주소의 크기)
     myreallist = [x for x in range(0, 10000)]
     print(sys.getsizeof(myreallist))
     #87632
  6. 여러값 리턴

     def get_user(id):
       # fetch user from database
       # ....
       return name, birthdate
     name, birthdate = get_user(4)

    3개 이상의 리턴값은 데이터클래스에 넣어서 리턴

  7. 데이터 클래스 사용
    3.7버전부터 데이클래스 지원

    데이터클래스는 코드를 줄여줌
    eq를 이용해서 비교할 수 있음
    repr를 이용해 데이터클래스를 출력할 수 있음
    데이터클래스는 type hint를 사용하므로 오류를 줄일 수 있음

     from dataclasses import dataclass
     @dataclass
     class Card:
         rank: str
         suit: str
    
     card = Card("Q", "hearts")
    
     print(card == card)
     # True
    
     print(card.rank)
     # 'Q'
    
     print(card)
     Card(rank='Q', suit='hearts')
  8. 두 변수의 값을 서로 바꾸려면

     a = 1
     b = 2
     a, b = b, a
     print (a)
     # 2
     print (b)
     # 1
  9. 딕셔너리 머지(Python 3.5+)

     dict1 = { 'a': 1, 'b': 2 }
     dict2 = { 'b': 3, 'c': 4 }
     merged = { **dict1, **dict2 }
     print (merged)
     # {'a': 1, 'b': 3, 'c': 4}
  10. 문자열 대문자 변경

    mystring = "10 awesome python tricks"
    print(mystring.title())
    '10 Awesome Python Tricks'
  11. 문자열을 나눠서 문자열 리스트

    mystring = "The quick brown fox"
    mylist = mystring.split(' ')
    print(mylist)
    # ['The', 'quick', 'brown', 'fox']
  12. 문자열 리스트를 문자열로 만들기

    mylist = ['The', 'quick', 'brown', 'fox']
    mystring = " ".join(mylist)
    print(mystring)
    # 'The quick brown fox'
  13. 이모지

    pip3 install emoji

    import emoji
    result = emoji.emojize('Python is :thumbs_up:')
    print(result)
    # 'Python is 👍'
    
    # You can also reverse this:
    result = emoji.demojize('Python is 👍')
    print(result)
    # 'Python is :thumbs_up:'
  14. 리스트 표현

    a[start:stop:step]

    • 시작은 0

    • 종료는 n(위치는 n-1 까지)

    • 스탭은 기본 1, 원하는 숫자

      # We can easily create a new list from 
      # the first two elements of a list:
      first_two = [1, 2, 3, 4, 5][0:2]
      print(first_two)
      # [1, 2]
      # And if we use a step value of 2, 
      # we can skip over every second number
      # like this:
      steps = [1, 2, 3, 4, 5][0:5:2]
      print(steps)
      # [1, 3, 5]
      # This works on strings too. In Python,
      # you can treat a string like a list of
      # letters:
      mystring = "abcdefdn nimt"[::2]
      print(mystring)
      # 'aced it'
  15. 문자열과 리스트 역순

    revstring = "abcdefg"[::-1]
    print(revstring)
    # 'gfedcba'
    revarray = [1, 2, 3, 4, 5][::-1]
    print(revarray)
    # [5, 4, 3, 2, 1]
  16. 고양이 사진 표현하기
    pip3 install Pillow

    from PIL import Image
    im = Image.open("kittens.jpg")
    im.show()
    print(im.format, im.size, im.mode)
    # JPEG (1920, 1357) RGB
  17. map() 함수 사용
    nap(function, sometthing_iterable)

    def upper(s):
    return s.upper()
    
    mylist = list(map(upper, ['sentence', 'fragment']))
    print(mylist)
    # ['SENTENCE', 'FRAGMENT']
    
    # Convert a string representation of
    # a number into a list of ints.
    list_of_ints = list(map(int, "1234567")))
    print(list_of_ints)
    # [1, 2, 3, 4, 5, 6, 7]
  18. list나 string에서 unique한 요소 뽑아내기

    mylist = [1, 1, 2, 3, 4, 5, 5, 5, 6, 6]
    print (set(mylist))
    # {1, 2, 3, 4, 5, 6}
    
    # And since a string can be treated like a 
    # list of letters, you can also get the 
    # unique letters from a string this way:
    print (set("aaabbbcccdddeeefff"))
    # {'a', 'b', 'c', 'd', 'e', 'f'}
  19. 주어지 값들 중에서 가장 빈도수가 높은 값 찾기

    test = [1,2,3,4,2,2,3,1,4,4,4]
    print(max(set(test), key=test.count)
    # 4    
  20. progress bar 만들기
    pip3 install progress

    from progress.bar import Bar
    
    bar = Bar('Processing', max=20)
    for i in range(20):
      # Do some work
      bar.next()
    bar.finish()
  21. IPython에서 _ 사용하기
    _ 연산자(underscore operator)는 마지막 식의 값을 가져옮
    In [1]: 3 * 3
    Out[1]: 9
    In [2]: _ + 3
    Out[2]: 12

  22. 웹서버 빠르게 만들기
    python3 -m http.server

  23. 다중문자열
    두번째 방법이 보기 좋음

    s1 = """Multi line strings can be put
      between triple quotes. It's not ideal
      when formatting your code though"""
    
    print (s1)
    # Multi line strings can be put
    #         between triple quotes. It's not ideal
    #         when formatting your code though
    
    s2 = ("You can also concatenate multiple\n" +
          "strings this way, but you'll have to\n"
          "explicitly put in the newlines")
    
    print(s2)
    # You can also concatenate multiple
    # strings this way, but you'll have to
    # explicitly put in the newlines
  24. 조건식에 3항 연산자 사용
    [on_true] if [expression] else [on_false]

    x = "Success!" if (y == 2) else "Failed!"
  25. 리스트 안에 있는 항목의 개수를 셀때

    from collections import Counter
    
    mylist = [1, 1, 2, 3, 4, 5, 5, 5, 6, 6]
    c = Counter(mylist)
    print(c)
    # Counter({1: 2, 2: 1, 3: 1, 4: 1, 5: 3, 6: 2})
    
    # And it works on strings too:
    print(Counter("aaaaabbbbbccccc"))
    # Counter({'a': 5, 'b': 5, 'c': 5})
  26. 비교 연산자의 연결

    x = 10
    
    # Instead of:
    if x > 5 and x < 15:
      print("Yes")
    # yes
    
    # You can also write:
    if 5 < x < 15:
      print("Yes")
    # Yes
  27. 색깔 추가

    from colorama import Fore, Back, Style
    
    print(Fore.RED + 'some red text')
    print(Back.GREEN + 'and with a green background')
    print(Style.DIM + 'and in dim text')
    print(Style.RESET_ALL)
    print('back to normal now')
  28. 날짜 처리 모듈 이용
    pip3 install python-dateutil

    from dateutil.parser import parse
    
    logline = 'INFO 2020-01-01T00:00:01 Happy new year, human.'
    timestamp = parse(log_line, fuzzy=True)
    print(timestamp)
    # 2020-01-01 00:00:01
  29. 정수 나누기
    PEP-0238

    #Python 2
    5 / 2 = 2
    5 / 2.0 = 2.5
    #Python 3
    5 / 2 = 2.5
    5 // 2 = 2
  30. chardet을 이용하여 charset 탐지
    pip install chardet

    chardetect somefile.txt
    somefile.txt: ascii with cofudence 1.0

출처 : http://j.mp/35P3GKQ

728x90

'다시시작하는 > PYTHON' 카테고리의 다른 글

Python 코딩 가이드라인  (0) 2020.02.06
pandas 설치  (0) 2020.01.30
데이터 분석을 위한 panda-profiling  (0) 2020.01.15

+ Recent posts