본문 바로가기

Engineering WIKI/Python51

collections 모듈 - Counter collections.Counter()의 결과값(return)은 딕셔너리 형태로 출력 # collections.Counter 예제 (1) # list를 입력값으로 함 import collections lst = ['aa', 'cc', 'dd', 'aa', 'bb', 'ee'] print(collections.Counter(lst)) ''' 결과 Counter({'aa': 2, 'cc': 1, 'dd': 1, 'bb': 1, 'ee': 1}) ''' # collections.Counter 예제 (2) # dictionary를 입력값으로 함 import collections print(collections.Counter({'가': 3, '나': 2, '다': 4})) ''' 결과 Counter({'다': 4.. 2022. 5. 12.
vars() 내장함수 모듈, 클래스, 인스턴스 또는 dict 어트리뷰트가 있는 다른 객체의 dict 어트리뷰트를 돌려줍니다. 인자가 없으면, vars() 는 locals() 처럼 동작합니다. locals 딕셔너리에 대한 변경이 무시되기 때문에 locals 딕셔너리는 읽기에만 유용하다는 것에 주의하세요 locals은 말그대로 locals()가 실행되어지는 함수내의 지역 namespace 들을 정리해서 넣어주고 globals는 전역, 지역, builtin 정보 모두 dict 형태로 정리해 준다. 아래 예제를 통해 이해해 보자. locals(), vars() 예제 a_var = range(2) def locals_test(): b_var = 3 c_var = "hi" d_var = locals() print(d_var) local.. 2022. 5. 10.
파이썬 리스트 컴프리헨션 num_list = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] new_list = [] # 평소에는 아래와 같이 작성 for num in num_list: if num > 3: new_list.append(num) # 여기서 List Comprehension을 사용하면 더 짧고 간결하게 코드를 작성할 수 있습니다. new_list = [ num for num in num_list if num > 3 ] # 이외에도 filter를 활용하는 방법도 있습니다. new_list = list(filter(lambda x: x > 3, num_list)) 2022. 5. 4.
Python 데코레이터 정의 : 데코레이터는 함수를 수정하지 않은 상태에서 추가 기능을 구현할 때 사용합니다 def hello(): print('hello 함수 시작') print('hello') print('hello 함수 끝') def world(): print('world 함수 시작') print('world') print('world 함수 끝') hello() world() hello 함수 시작 hello hello 함수 끝 world 함수 시작 world world 함수 끝 만약 다른 함수도 시작과 끝을 출력하고 싶다면 함수를 만들 때마다 print를 넣어야 합니다. 따라서 함수가 많아지면 매우 번거로워집니다. 이런 경우에는 데코레이터를 활용하면 편리합니다. 다음은 함수의 시작과 끝을 출력하는 데코레이터입니다. def.. 2022. 5. 2.
파이썬 __ slots __ 파이썬 __ slots __ 클래스를 사용해보았다면 __dict__을 통해서 클래스의 인스턴스가 가진 모든 속성을 확인해본적이 있을 것이다. 딕셔너리는 메모리를 많이 잡아먹는 단점이 있는데, 만약 수 백만개의 인스턴스를 생성한다면 그 만큼 사용되는 메모리가 매우 크게 증가한다는 것을 의미한다. 클래스가 가지는 속성을 제한함으로써 최적화를 할 수 있으며 이 때 필요한 __slot__이라는 키워드에 대해서 정리해보자. slots 이란? slots은 클래스가 가진 속성을 제한할때 사용한다. 클래스의 dict 속성을 최적화하는 데에 사용할 수 있는데 기존의 딕셔너리로 관리하는 속성을 집합 형태의 Set으로 바꿈으로써 동작한다. 메모리를 절약할 수 있다는 장점이 있다. ( __slots__은 객체마다 생성되는 _.. 2022. 4. 28.
파이썬 property(), @property 파이썬에 내장되어 있는 property() 함수와 @property 데코레이터에 대해서 알아보겠습니다. 필드명 사람의 이름, 성, 나이 데이터를 담기 위한 간단한 클래스를 하나 작성해보겠습니다. 아래 Person 클래스는 이름 first_name, last_name, age 이렇게 3개의 필드로 이루어져 있습니다. class Person: def __init__(self, first_name, last_name, age): self.first_name = first_name self.last_name = last_name self.age = age Person 클래스의 인스턴스를 생성 후에, 현재 필드 값을 읽거나 새로운 필드 값 쓰는 것은 매우 자유롭습니다. >>> person = Person("Joh.. 2022. 4. 25.