반응형

파이썬 111

collections Counter 로 가장 많이 사용한 단어 찾기

신문이나 책에서 가장 많이 사용된 단어를 찾고 싶을때 유용한 모듈이다. collections 의 Counter는 파이썬 모듈로 입력값으로 받은 값을 카운팅해서 dictionary 형태로 해당 단어와 단어가 사용된 횟수를 알려 준다. 리스트를 입력값으로 넣으면 리스트내의 값을 비교해주고 string으로 입력하면 한단어를 기준으로 파악해준다. 아래 코드를 통해 쉽게 이해해 보자 import re import collections paragraph = "윤석열 검찰총장에 대한 징계 심의를 \ 하루 앞두고 오늘 법무부 감찰위원회가 긴급 소집됩니다.\ 윤 총장에 대한 감찰이 타당한지 등을 논의할 전망인데, \ 어떤 권고가 나올 지 주목됩니다.법무부 나가있는 취재기자 \ 연결해 자세한 내용 들어보겠습니다.이재희 기..

파이썬 list 와 슬라이싱(slicing)

슬라이싱은 [ : : ] 로 표현된다. 세미콜론(:)이 두개 들어 가는데 첫번째 인자는 리스트로 생각하면 index의 시작 점, 두 번째는 끝점, 마지막 인자는 index를 몇 칸씩 움직일지를 알려 준다. 슬라이싱의 장점은 파이썬에서 일반 list를 사용할 경우 내부 값의 위치를 변경할 경우 index를 참조해서 움직이므로 그에 따른 시간이 걸린다. 하지만 슬라이싱은 파이썬 내부에서 C로 구현된 구조체여서 빠른 속도로 변경이 가능하다. 그리고 string의 경우 리스트에 넣어서 변경해야 하는것에 반해 슬라이싱은 string도 자유롭게 변경할 수 있다. 아래 예제를 통해 이해해 보자 a_var = "ABCdef12345" b_var = a_var[1:7:2] c_var = a_var[::-1] print(..

파이썬 replace, strip 함수란

string 을 변경할 때 유용한 함수가 replace와 strip 이다. 우선 strip은 string의 제일 앞 또는 끝의 내용이 인자와 일치 할 경우 삭제해준다. 만일 인자를 넣지 않으면 \n(줄넘김), 빈공백을 없애 준다. 줄넘김과 빈공백 또한 string의 앞 또는 끝에 위치 할 경우 만이다. string 중간에 위치한 줄넘김, 공백을 없애고 싶을 경우나 내용을 변경하고 싶을 때 replace 를 사용한다. 아래 코드와 결과를 보면 쉽게 이해 될 것이다. a_var = "12 3@abc\ndef\n" print(a_var) print("##################") print(a_var.strip()) print("##################") print(a_var.strip("1..

continue, break, pass 차이

조건문을 사용할 때 continue, break, pass 를 어떻게 사용하는 냐에 따라 조건문 진행 방법이 달라 진다. 아래 코드를 통해 간단하게 이해해보자 for a_var in range(5): if a_var == 3: print("a_var종료") continue print(a_var) print("") for b_var in range(5): if b_var == 3: print("b_var종료") break print(b_var) print("") for c_var in range(5): if c_var == 3: print("c_var종료") pass print(c_var) print("") 결과>> 0 1 2 a_var종료 4 0 1 2 b_var종료 0 1 2 c_var종료 3 cont..

collections.defaultdict 이란

딕셔너리는 존재하지 않는 키 값을 출력 할 경우 아래 코드 처럼 에러가 발생 한다. 이러한 에러를 없애기 위해 try 문을 사용한다. import collections a_var = {"k_1":"v_1","k_2":"v_2","k_3":"v_3","k_4":"v_4"} try: print(a_var["k_5"]) except: print("에러발생") 결과>> 에러발생 defaultdict 객체는 위의 딕셔너리 문제를 쉽게 해결해 준다. defaultdict에 인자 값은 int, list, set 을 받을 수 있다. 아래 코드 처럼 키의 value 값은 default로 int 0이 자동으로 들어 간다. 그리고 인자를 int로 사용했을 경우에도 다른 값 (여기서는 string) 을 선언해서 사용할 수 있..

별표하나 별표두개 (*arg, **kwarg)

파이썬에서 함수 인자 앞에 별표 한개를 쓰느냐 두개를 쓰는 것에 대해 간단히 설명하겠다. 별표 없이 인자만 선언되어 있을 경우는 함수에 인자 갯수는 정의에 따라 고정되고 항상 동일한 수로 입력 해야한다. 하지만 별표 한개로 (*)로 정의 하면 인자 수를 제한 없이 사용할 수 있는 장점이 있다. 함수 내부에서는 해당 인자를 튜플로 인식해서 사용 된다. 별표 두개는 key 값과 value로 받아서 dictionary로 만들어 준다. 함수 내부에서는 해당 dictionary 형태로 사용할 수 있는 것이다. 또는 미리 key 값을 선언해 놓으면 dictionary로 넣을 경우 value 값만 받는 형태로도 사용할 수 있다. def arg_test(*args): print(type(args)) print(args..

파이썬 변수는 객체이다

파이썬은 모든 변수를 선언할때 객체에 의해서 선언된다. 아래 예를 통해 이해해 보자. a_var = 3 b_var = a_var print(type(a_var)) print(id(a_var)) print(id(3)) print(id(b_var)) b_var = 5 print(id(5)) print(id(b_var)) 결과>> 1668610000 1668610000 1668610000 1668610032 1668610032 C언어의 경우를 생각해보면 a_var와 b_var는 다른 메모리 주소를 가리킬 것이고 해당 메모리 주소를 따라가면 3이라는 값을 읽을 수있다. 하지만 파이썬의 경우 모두 int라는 클래스 안에 할당되고 a_var, b_var, 3이라는 값 모두 해당 주소 값을 가리키는 것을 알 수 있다.

locals(), globals()

locals 와 global의 현재 namespace (전역, 지역, builtin) 을 딕션너리(dict)으로 정리해서 넣어 준다. 둘의 차이는 locals은 말그대로 locals()가 실행되어지는 함수내의 지역 namespace 들을 정리해서 넣어주고 globals는 전역, 지역, builtin 정보 모두 dict 형태로 정리해 준다. 아래 예제를 통해 이해해 보자. a_var = range(2) def locals_test(): b_var = 3 c_var = "hi" d_var = locals() print(d_var) locals_test() e_var = globals() print(e_var) 결과>> {'b_var': 3, 'c_var': 'hi'} {'__name__': '__main__..

enumerate, index값 불러오기

자료형 list, set, tuple 들은 값의 순서를 왼쪽부터 index를 매길 수 있다. enumerate를 사용하지 않는 다면 아래 코드 처럼 갯수를 알기 위해 len라는 함수를 불러 추가적인 작업이 필요하다. a_var = range(5) for index in range(len(a_var)): print(index, a_var[index]) enumerate를 사용하면 아래 코드 처럼 함수 하나로 index와 값을 추출 할 수 있다. 여기서 우리는 enumerate의 return 값은 index, value 두 개가 나옴을 알 수 있다. a_var = range(5) for index, x in enumerate(a_var): print(index, x) 결과>> 0 0 1 1 2 2 3 3 4 4

graph내에 event 처리 방법 - 마우스 클릭, 롤오버

matplotbli으로 graph를 그리고 난 뒤 마우스 클릭이나 키보드 동작같은 event에 따라 다른 동작을 시킬 때(bind) 유용한 기능이다. 아래 예제 코드를 통해 사용법을 알아 보자. 아래 코드 예제는 참조 링크에서 가져왔다. from matplotlib import pyplot as plt class LineBuilder: def __init__(self, line): self.line = line self.xs = list(line.get_xdata()) self.ys = list(line.get_ydata()) self.cid = line.figure.canvas.mpl_connect('button_press_event', self) def __call__(self, event): pri..

반응형