본문 바로가기

전체 글112

#9. lambda, map, reduce, filter lambda PYTHON의 lambda expression은 무명메소드로써 함수를 한줄에 정의할 수 있는 장점이 있다. lambda x, y: x + y >> (lambda x, y: x + y)(10, 20) >> 30 이 lambda expression을 응횽하는 방법 3가지를 알아볼 것이다. map map() 내장함수는 주로 iterator의 타입을 바꾸는데 많은 예를 든다. list(map(int, (0.1, 9.2, 4.3, 1.3))) >> [0, 9, 4, 1] 그러나 실제로 이 코드의 의미는 map(function, iterator)로써 iterator 인스턴스의 각 요소을 function의 인자로 대입하는 것이다. 즉, int() 라는 function의 argument로 0.1, 9.2,.. 2021. 3. 25.
#8. [Tip] if, 삼항연산자가 사용하기 싫을 때 @pyqtSlot(bool) def on_toggled_change_highlight(self, state): for rubber in self.rubbers: rubber.setColor({True: QColor(247, 230, 0), False: Qt.transparent}[state]) self.iface.mapCanvas().refresh() 딕셔너리에 bool 타입의 키값을 대입하여 사용할 수 있다. 필자와 같은 경우 이벤트 핸들러에 넘겨지는 bool 타입의 인자를 딕셔너리의 키값으로 활용한 케이스이다. 2021. 3. 24.
#7. zip 필자는 코드를 짜면서 유틸들을 자주 만들었다. 그러나 이것들은 로직이 복잡하지 않을 경우 지양해야 하는 방법이다. PYTHON을 사용한다면 최대한 PYTHONIC하게 구현하는 것을 지향해야 한다. 오늘은 내장함수인 zip()에 대해서 알아볼 것이다. 일단 필자의 전례를 들자면.. class StructureUtils: @staticmethod def mapping_dict_between_tuple(d: dict, t: tuple): for i, key in enumerate(d): d[key] = t[i] return d 딕셔너리에 여러값을 담고 있는 iterator(여기서는 튜플)를 value에 자동으로 대입하고 싶었다. 그러나 하나하나 일일이 대입하기에 한계를 느껴 다음과 같은 유틸을 만들었다. 만들.. 2021. 3. 24.
#6. property 데코레이터 작업을 하던 도중 처음보는 데코레이터를 발견했다. 보통 우리는 객체의 필드를 직접 접근하는 것을 방지하기 위해 해당 필드를 protected나 private 접근제한자를 사용하여 (물론 파이썬에는 접근제한자가 없어 언더바(_) 명명법을 통해 설정하지만..) getter와 setter를 사용하여 접근할 수 있도록 캡슐화(Encapsulation)을 한다. 이러한 과정을 간소화 시켜주는 것이 프로퍼티의 역할이다. -> 특정 인스턴스(객체)의 인스턴스 필드를 직접 접근하는 것을 방지하기 위해 언더바(_)가 붙여진 "접근이 제한된 필드"를 접근하기 위한 역할이다. @property만 정의하면 해당 필드에 대해서는 get만 가능하고, @property와 @.setter까지 정의하면 get, set이 가능해진다. .. 2021. 2. 2.
#1. 시점이동, 객체의 필드 >>> iface.activeLayer().select(42) 해당 ID의 객체 선택 >>> iface.mapCanvas().zoomToSelected() 선택된 객체로 시점 이동 >>> feat = iface.activeLayer().getFeature(613) >>> fields = feat.fields() # return QgsFields (iterater) 해당 객체의 속성들을 받을 수 있다. >>> feat.attribute('Text') 해당 객체의 Text 속성에 대한 값 2021. 1. 22.
#0. QgsGeometry, asPolyline() iface.activeLayer().selectedFeatures()[0].geometry() 선택된 객체들중 첫 번째의 지오메트리 정보를 반환한다. 해당 객체는 선형 객체이기 때문에 LineString 형태를 띄고 있다. iface.activeLayer().selectedFeatures()[0].geometry().asPolyline() [, , , , , , , , , , , ] 선형객체의 각 포인트를 리스트로 반환하려면 asPolyline() 메소드를 사용하면 된다. 각 점들은 QgsPointXY 타입이다. 2021. 1. 22.