본문 바로가기

Language/Python

(27)
python permutations 사용법 itertools 라이브러리 안에 있는 기능 from itertools import permutations a = [1,2,3] p = list(permutations(a,2)) # 2번째 인자부분은, 얻고자 하는 경우의 수의 범위 ex) 2는 (1,2), (1,3), (2,1), (2,3), (3,1), (3,2)가 된다. 근데 이렇게 하면, (1,2) (2,1) 처럼 같은 경우의 수가 불필요하게 반복되는 것을 볼 수 있다. set_p = list(set([tuple(sorted(list(i))) for i in p])) # 이렇게 하면, [(1,2), (1,3), (2,3)]이 출력된다.
python 서로 다른 크기의 리스트 합치기(zip_longest) 서로 다른크기의 리스트 합치는 방법 이 글에서 뜻하는 서로다른 크기의 리스트 합치기란, a = [1,2,3], b = [4,5] 일 때, c = (1,4), (2,5), (3,)으로 만드는 방법을 뜻한다. 방법 같은 크기의 리스트일 때에는, zip이나 numpy를 사용해서 쉽게 합칠 수 있다. 예) a = [1,2,3], b = [4,5,6]일 때, c = (1,4), (2,5), (3,6)을 zip이나 numpy를 사용해 만들 수 있다. 하지만 다른 크기의 리스트일 때, zip을 사용하게되면, c = (1,4), (2,5), (3,)으로 만들어지는게 아닌, (3,)은 맞아떨어지는 짝이 없기때문에 무시하게된다(사라진다). 이때! 사용하는게 zip_longest다. zip_longest에 대한 설명은 따로..
python 딕셔너리 키 중복으로 넣는법 딕셔너리 키를 중복으로 넣는 법 Python dict를 사용하다보면 {"bob":19, "anna":15, "bob":20} 위 딕셔너리처럼 동일한 Key인, bob이 존재할 수 있는 경우가 발생한다. 위 그대로 person = {"bob":19, "anna":15, "bob":20}를 하게되면, person을 print 할 시, {"bob":20, "anna":15}로 나올 것이다. 지금부터 설명할 내용은, 내가 원하는 바는 {"bob":19, "anna":15, "bob":20} 였는데, {"bob":20, "anna":15}로 나올때 {"bob":19, "anna":15, "bob":20}로 딕셔너리에 저장하는 방법이다. class person(object): def __init__(self,nam..
python range, enumerate 차이점 range, enumerate 차이점 먼저 range경우 예시를 보면, tmp = [1,2,3,4,5] for i in range(len(tmp)): print (tmp[i]) >>> 1 2 3 4 5 와 같이 나오게된다. 다음으로, enumerate의 예시를 보면, tmp = [1,2,3,4,5] for i in enumerate(tmp): print (i) >>>(0, 1) (1, 2) (2, 3) (3, 4) (4, 5) 처럼 나온다. ! 이때 반환 타입은 보면 알다시피 tuple 형태 즉, range와 enumerate의 차이점은 range경우에는 index로 접근해야하며, 값과 index를 반환 하려면 코드가 더 추가되는 번거로움이 존재한다. enumerate는 range의 번거로움을 간결하게 ..
python 리스트 안에 딕셔너리 중복제거 하는 방법 여러 방법중, json 모듈을 사용해서 할수있다! import json set_of_jsons = {json.dumps(d, sort_keys=True) for d in X} X = [json.loads(t) for t in set_of_jsons] X는 [{}, {}] 형태로 존재하는, 내가 중복을 제거 하고자하는 변수 명 List 안에 List를 하나의 List로 합치는법은, sum(변수, [])
Selenium 간단 정리 파이썬으로 웹 크롤링 하기 위해서 사용하는 모듈. 설치 방법 pip install selenium 해당하는 브라우저에 맞는 웹드라이버 설치 필요 Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/ Firefox: https://github.com/mozilla/geckodriver/releases Safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/ 사용법 크롬을 사용하여 해봤는데, 개발자도구를 사용하여 HTML을 보면서 진행 ..
파이썬 multiprocessing 모듈 (map_async, apply_async) map(), map_async() map_async()는 인자를 넘겨줄때 하나의 튜플로 묶어야한다. ex) ((a),) or (a,b) map은 block, map_async는 non-block map_Async(), apply_async() 사용 시 사용할 수 있는 함수들 설명 get([timeout=x]) 결과가 도착할 때 반환. timeout 안에 도착하지 않으면 timeoutError 발생. timeout이 없을때, 결과가 도착하지 않는 경우를 경험했는데, 서브 프로세스의 결과가 도착할때 까지 메인 프로세스에서 다음으로 진행되지 못하고 계속 기다리는 현상 발생(hang). wait([timeout=x]) 결과가 사용가능할때까지 또는 timeout이 지날때까지 기다린다. timeout이 지났는데도 ..
python logging 예제 logging debug < info < warning < error < critical파이썬 로깅의 기본 설정은 warning이다. 그래서 import logging을 했을 경우, warning ~ 만 출력이 된다. 로깅의 기본설정을 바꿔야 debug, info level를 출력할 수 있다. 기본설정을 바꾸는 방법은 아래와 같다.import logging mylogger = logging.getLogger("my") mylogger.setLevel(logging.DEBUG) 출력 형식을 변경할 수도 있다. 하는방법은 아래와 같다.import logging ''' 생성 시간 : %(acstime)s 로깅 레벨 : %(levelname)s 라인 번호 : %(lineno)s 로그 내용 : %(message)..