[ Python ] Dictionary , Set Hash 이용해보자
·
Archive/Develop
Dictionary 와 Set 은 Hash 테이블 구조를 가지고 있다. 그래서 삽입과 삭제, 탐색 하는 연산의 시간복잡도는 O(1) 이다. Set 활용 Tip ! 값을 찾기 위해 list 에서 in 을 사용하게 된다면, 해당 연산의 시간 복잡도는 O(n) 일 것이다. 하나의 데이터를 찾기 위해 최대 데이터 개수 n 만큼 순회를 해야한다는 것인데, 이를 set 을 이용하면 좋다! 간단한 테스트를 위해 주피터노트북을 활용했다. 아래 예시는 list 를 하나하나 순회하면서 데이터를 찾는 것이다. 아래 예제는 총 7초의 실행시간을 가졌다. 반면 set 을 이용한 아래의 예제는 약 4초의 실행시간을 가졌다. 이렇게 단순한 예제에서도 시간 차이가 꽤 나는 것을 확인할 수 있다. 앞으로 리스트 내에서 in 연산을 통..
파이썬 의존성 관리 Poetry 란 무엇인가
·
Archive/Develop
오늘은 참 바쁜 날이었습니다. 일도 하고, 퇴근하고 세미나도 듣고,,, 하지만 해야할 일이 남아있기때문에 다시 앉았습니다. 오늘 밤은 참 길것 같습니다... 하하하 각설하고, 오늘은 떠오르는 의존성 관리자, poetry 를 사용해보겠습니다. 의존성 관리자(Dependency Manager)? 많이 들어보셨을지도 모릅니다. 패키지 관리자라는 말이 조금 더 익숙하실지도요. 아마 파이썬을 사용해보셨다면 한번 쯤은 다들 타이핑해보셨을 pip 가 바로 패키지 관리자임과 동시에 의존성 관리자입니다. 패키지 관리자는 사용자가 설치하고자 하는 패키지를 저장소에서 찾아 다운로드 하고 설치하는 역할을 하고, 의존성 관리자는 하나의 패키지가 요구하는 다른 패키지 들을 올라가며 설치해야할 패키지의 목록을 구성하고, 의존성을 ..
[ Python ] List Comprehension| 리스트 컴프리헨션 대괄호와 list()의 성능 차이
·
Archive/Develop
사실 이건 포스팅하기도 조금 민망할 정도로 짧긴한데, 이런건 내가 직접 실행해봐도 느낄 수 없는 부분이라 잊으면 그냥 그대로 내 손해다. 그래서 작성해본다. 리스트 컴프리헨션은 아래와 같다. a = [i for i in range(10)] b = list(i for i in range(10)) print(a) print(b) 리스트 내에서 for 나 if 문을 쓰는 것이다. 코드를 살펴보면 a 와 b 둘 다 같은 동작을 하고 있다. 실행 결과도 동일하다. 그렇지만 나는 앞으로 [식 for 변수 in 리스트] 의 형식을 써야겠다. 일단 둘은 같은 동작을 하지만 성능이 대괄호를 사용하는게 더 좋다고 한다. 심지어 list 방식은 C스타일이라 파이썬답지 않은 코드라고.. ㅎㅎ.. 일단 성능 면에서 더 우수하다..
주석(comment)
·
Archive/Develop
TODO 이외에도 FIXME, BUG, NOTE 등과 같이 코드는 아니지만 일관된 주석을 사용합니다. 주석을 다는 것은 프로그래머들 마다 다 다르지만, 이렇게 다는 경우가 많다고 한다. https://www.jetbrains.com/help/pycharm/using-todo.html TODO comments | PyCharm www.jetbrains.com 특히 파이참에서는 저런 주석에 대한 하이라이트 기능도 따로 제공하고 있는 듯 하다. 시간날때 한번 훑어보면 좋을 것 같다. 확실히 저렇게 달면 나중에 찾기도 편하고, 보기 좋을 듯 하다.