Python 3을 사용해라
2020.1.1. Python 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
IPython을 사용해라
%cd, %edit, %env, %pip install [pkgs], %time, %timeit
pip3 install ipython리스트 표현
[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]
생성한 오브젝트의 메모리 사용량을 체크
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
여러값 리턴
def get_user(id): # fetch user from database # .... return name, birthdate name, birthdate = get_user(4)
3개 이상의 리턴값은 데이터클래스에 넣어서 리턴
데이터 클래스 사용
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')
두 변수의 값을 서로 바꾸려면
a = 1 b = 2 a, b = b, a print (a) # 2 print (b) # 1
딕셔너리 머지(Python 3.5+)
dict1 = { 'a': 1, 'b': 2 } dict2 = { 'b': 3, 'c': 4 } merged = { **dict1, **dict2 } print (merged) # {'a': 1, 'b': 3, 'c': 4}
문자열 대문자 변경
mystring = "10 awesome python tricks" print(mystring.title()) '10 Awesome Python Tricks'
문자열을 나눠서 문자열 리스트
mystring = "The quick brown fox" mylist = mystring.split(' ') print(mylist) # ['The', 'quick', 'brown', 'fox']
문자열 리스트를 문자열로 만들기
mylist = ['The', 'quick', 'brown', 'fox'] mystring = " ".join(mylist) print(mystring) # 'The quick brown fox'
이모지
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:'
리스트 표현
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'
문자열과 리스트 역순
revstring = "abcdefg"[::-1] print(revstring) # 'gfedcba' revarray = [1, 2, 3, 4, 5][::-1] print(revarray) # [5, 4, 3, 2, 1]
고양이 사진 표현하기
pip3 install Pillowfrom PIL import Image im = Image.open("kittens.jpg") im.show() print(im.format, im.size, im.mode) # JPEG (1920, 1357) RGB
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]
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'}
주어지 값들 중에서 가장 빈도수가 높은 값 찾기
test = [1,2,3,4,2,2,3,1,4,4,4] print(max(set(test), key=test.count) # 4
progress bar 만들기
pip3 install progressfrom progress.bar import Bar bar = Bar('Processing', max=20) for i in range(20): # Do some work bar.next() bar.finish()
IPython에서 _ 사용하기
_ 연산자(underscore operator)는 마지막 식의 값을 가져옮
In [1]: 3 * 3
Out[1]: 9
In [2]: _ + 3
Out[2]: 12웹서버 빠르게 만들기
python3 -m http.server다중문자열
두번째 방법이 보기 좋음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
조건식에 3항 연산자 사용
[on_true] if [expression] else [on_false]x = "Success!" if (y == 2) else "Failed!"
리스트 안에 있는 항목의 개수를 셀때
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})
비교 연산자의 연결
x = 10 # Instead of: if x > 5 and x < 15: print("Yes") # yes # You can also write: if 5 < x < 15: print("Yes") # Yes
색깔 추가
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')
날짜 처리 모듈 이용
pip3 install python-dateutilfrom 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
정수 나누기
PEP-0238#Python 2 5 / 2 = 2 5 / 2.0 = 2.5 #Python 3 5 / 2 = 2.5 5 // 2 = 2
chardet을 이용하여 charset 탐지
pip install chardetchardetect somefile.txt somefile.txt: ascii with cofudence 1.0
출처 : http://j.mp/35P3GKQ
'다시시작하는 > PYTHON' 카테고리의 다른 글
Python 코딩 가이드라인 (0) | 2020.02.06 |
---|---|
pandas 설치 (0) | 2020.01.30 |
데이터 분석을 위한 panda-profiling (0) | 2020.01.15 |