[Python 정리] 리스트에서 평균과 가장 가까운 값의 인덱스를 찾는 법? (lambda 식 사용법)
◎ Python/알게된 것 정리2023. 3. 17. 17:06[Python 정리] 리스트에서 평균과 가장 가까운 값의 인덱스를 찾는 법? (lambda 식 사용법)

lambda람다는 생각보다 많은 곳에서 쓰일 수 있다. 이번에 문제를 해결하다가 알게 된 기술을 복습할 겸 블로그에 기술해본다. 기본적으로 람다는 개별적으로 함수를 작성하지 않고 간단하게 덧붙일 때 많이 사용하는 편이다. 본인은 그 중에서도 2차원 리스트를 sort할 때 가장 많이 사용하는 듯 하다.arr = [[1, 45], [2, 34], [3, 55], [4, 66], [5, 59], [6, 75] , [7, 79]] arr.sort(key=lambda x : x[1]) # 2번째 인덱스를 기준으로 오름차순 정렬 print(arr) >>> [[2, 34], [1, 45], [3, 55], [5, 59], [4, 66], [6, 75], [7, 79]]위와 같이 말이다. 그런데 문제를 풀다 보니 궁금..

[코딩의 기술] 6. 인덱스보다는 대입을 사용해 데이터를 언패킹하자
◎ Python/코딩의 기술 (책)2022. 11. 30. 18:52[코딩의 기술] 6. 인덱스보다는 대입을 사용해 데이터를 언패킹하자

파이썬에는 값으로 이루어진 불변 순서쌍을 만들어낼 수 있는 tuple 내장 타입이 존재한다. 튜플은 숫자 인덱스를 사용해 접근할 수 있고, 인덱스를 통해 새 값을 대입하는 식으로 튜플을 변경할 수는 없다. 언패킹(unpacking) 파이썬에는 언패킹(unpacking)구문이 존재한다. 언패킹 구문을 사용하면 한 문장 안에서 여러 값을 대입할 수 있다. 언패킹 구문에 사용된 패턴은 튜플을 변경하려고 시도할 때 사용한 구문, 즉 파이썬이 허용하지 않았던 구문과 비슷하지만 매우 다르게 작동한다. 예를 들어 튜플이 쌍이라는 사실을 알고 있으면 인덱스를 사용해 각 값에 접근하는 대신 이 튜플을 두 변수 이름으로 이루어진 튜플에 대입할 수 있다. item = ('호박엿', '식혜') first, second = i..

[코딩의 기술] 5. 복잡한 식을 쓰는 대신 도우미(헬퍼) 함수를 작성하자
◎ Python/코딩의 기술 (책)2022. 11. 29. 22:13[코딩의 기술] 5. 복잡한 식을 쓰는 대신 도우미(헬퍼) 함수를 작성하자

들어가며 파이썬의 특출난 장점 중 하나로 간결한 문법이 있다. 이를 활용해 많은 로직을 표현식 한 줄로 작성할 수 있는데, 예를 들어 URL에서 쿼리 문자열(질의 문자열)을 구문 분석해야 한다고 가정하자. 여기서 각 질의 문자열 파라미터는 정수 값을 표현한다. (urllib를 다뤄보지 않았어도 대충 문법만 참고해보자.) 다음 예에서 각 쿼리 문자열 파라미터는 정수 값을 표현한다. from urllib.parse import parse_qs my_values = parse_qs('red=5&blue=0&green=', keep_blank_values=True) print(repr(my_values)) # repr 함수는 https://wikidocs.net/134994를 참고하자. >>> {'red': [..

[코딩의 기술] 4. f-문자열을 통한 인터폴레이션을 사용하라
◎ Python/코딩의 기술 (책)2022. 11. 28. 23:43[코딩의 기술] 4. f-문자열을 통한 인터폴레이션을 사용하라

파이썬 코드에서 문자열은 자주 사용된다. 메세지를 표시하거나, 데이터를 쓰거나, Exception에 자세히 기록하거나, 디버깅을 할 때 등등. 형식화, formatting, 포맷팅 형식화(formatting)는 미리 정의된 문자열에 데이터 값을 끼워 넣어 사람이 보기 좋은 문자열로 저장하는 과정이다. 파이썬에서는 언어에 내장된 기능과 표준 라이브러리를 통해 네 가지 방식으로 형식화를 할 수 있다. 그러나 한 가지 방법을 제외한 나머지는 모두 치명적인 단점이 존재한다. % 형식화 파이썬에서 문자열을 형식화하는 가장 일반적인 방법은 % 형식화 연산자를 사용하는 것이다. 이 연산자 왼쪽에 들어가는 미리 정의된 텍스트 템플릿을 형식 문자열이라 한다. 템플릿에 끼워 넣을 값들은 연산자의 오른쪽에 단일 값이나 tu..

[코딩의 기술] 3. bytes와 str의 차이를 알자
◎ Python/코딩의 기술 (책)2022. 11. 27. 21:55[코딩의 기술] 3. bytes와 str의 차이를 알자

bytes와 str의 차이는? 파이썬에는 문자열 데이터의 시퀀스를 표현하는 두 가지 타입이 있다. 바로 bytes와 str이다. 아래 코드처럼 bytes 타입의 인스턴스에는 부호가 없는 8바이트 데이터가 그대로 들어간다. (종종 아스키 인코딩을 사용해 내부 문자를 표시한다.) a = b'h\x65llo' print(list(a)) print(a) >>> [104, 101, 108, 108, 111] b'hello' 위 코드에서 \x65는 e를 의미한다. 그리고 b 뒤에 ' '(작은따옴표)나 " "(큰따옴표)를 붙이면 바이트(bytes) 객체가 된다. 그래서 리스트로 변환 시 bytes가 출력된다. str 인스턴스에는 사람이 사용하는 언어의 문자를 표현하는 유니코드 코드 포인트(code point)가 들어..

[Python 정리] 내장함수 zip, filter에 대하여
◎ Python/알게된 것 정리2022. 9. 26. 22:17[Python 정리] 내장함수 zip, filter에 대하여

zip 기본적인 사용법 반복 가능한(iterable) 객체에 대한 처리를 수행하는 알게 된 지 얼마 안된 내장 함수다. zip은 여러 개의 이터러블을 받아 튜플로 반환하는 이터레이터를 만든다. 예시로 보자. x = [1, 2, 3] y = [4, 5, 6] arr = zip(x, y) print(arr) >>> 바로 출력하면 내부 요소가 보여지기 않기 때문에 리스트나 딕셔너리로 변환해서 출력해야 한다. x = [1, 2, 3] y = [4, 5, 6] arr = list(zip(x, y)) print(arr) >>> [(1, 4), (2, 5), (3, 6)] 정상적으로 요소들이 튜플로 묶여있는 모습을 볼 수 있다. 유용한 방법 1 (병렬 처리) zip으로 생각보다 다양한 작업을 처리할 수 있다. 대표적..

[Python 정리] if __name__ == "__main__": 의 의미, 활용법
◎ Python/알게된 것 정리2022. 9. 24. 17:17[Python 정리] if __name__ == "__main__": 의 의미, 활용법

__name__ 변수는? 파이썬의 내장변수로, 이 변수에는 기본적으로 해당 파이썬 파일의 이름이 들어간다. 쉽게 말하자면 모듈의 이름이 들어간다. 만약 내가 모듈, 즉 파일을 usercode.py로 저장했다면 __name__은 "usercode"가 된다. 그런데, 만약 내가 현재 열고 있는 파일 내에서 실행시키면 __main__이 __name__이 된다. 즉 내가 현재 usercode.py을 열고 실행시킨다면 __name__변수에 "__main__"이 저장된다. 그러나 usercode.py를 main.py 파일에서 import하고 실행시킨다면 usercode.py의 __name__변수에는 "usercode"가 저장된다. 아래 코드로 보자. # usercode.py def start(x, y): print..

[Python 정리] 프로퍼티, setter, 프라이빗 속성이란?
◎ Python/알게된 것 정리2022. 9. 24. 02:12[Python 정리] 프로퍼티, setter, 프라이빗 속성이란?

프로퍼티 (Property) 클래스에서 프로퍼티는 값을 얻을 때 호출되는 메서드를 의미한다. 메서드 위에 @property를 넣으면 해당 인스턴스 메서드를 인스턴스 변수와 같이 다루게 되어 편리하다. @로 시작하는 문자열을 이용해 메서드를 수식하는 기능은 데코레이터라고 한다. class Person: def __init__(self, name, age, sex): self.name = name self.age = age self._sex = sex # _를 줌으로써 프라이빗 속성 @property def sex(self): print(self._sex) @sex.setter def sex(self, sex): if isinstance(sex, int): print("문자열을 입력하세요.") else: s..

[Python 정리] __init__과 __new__의 차이에 대하여
◎ Python/알게된 것 정리2022. 9. 24. 01:41[Python 정리] __init__과 __new__의 차이에 대하여

클래스의 기본적인 생성 방법은 아래 링크의 글을 참고하면 좋을 것 같다. https://reo91004.tistory.com/216 [파이썬 심화] 13. 클래스 정의하기 함수를 정의하는 것은 함수 객체를 만드는 것이다. 클래스를 정의하는 것도 실제 클래스를 만드는 것이다. 파이썬에서 클래스는 객체를 만드는 툴이다! 클래스를 정의하는 문장 클래스를 만드 reo91004.tistory.com 클래스와 인스턴스의 차이를 명확히 하자 정보를 찾다 보면 객체와 인스턴스를 자주 언급된다. 둘이 같은 것이라고 하는데, 정확한 차이를 알아보자. 우선 클래스로 만든 객체를 인스턴스라고 한다. 이렇게 말하면 같은 게 맞지 않나 생각이 든다. Klass 클래스를 활용해 kls = Klass() 로 만든 객체는 kls다. ..

[Python 정리] 파이썬에서의 데이터 구조
◎ Python/알게된 것 정리2022. 9. 22. 00:01[Python 정리] 파이썬에서의 데이터 구조

숫잣값 리터럴을 사용할 때 1_000_000 >>> 1000000 # 언더바를 사용해 보기 좋게 쓸 수 있다. 위와 같이 보기 좋게 표현할 수 있다. float 타입 var = float('inf') print(var) >>> inf float('inf')를 사용하면 무한대의 값을 지정할 수 있다. str과 bytes의 차이 str 타입은 사람이 이용하기 쉬운 문자열을 다루고, bytes 타입은 컴퓨터가 다루기 쉬운 바이트를 다룬다. 이 둘은 서로 변환이 가능하다. var = "예시" type(var) >>> str var_encoded = var.encode('utf-8') type(var_encoded) >>> bytes var_encoded >>> b'\xec\x98\x88\xec\x8b\x9c' ..

[Python 정리] 파이썬 all/any 함수
◎ Python/알게된 것 정리2022. 9. 21. 20:09[Python 정리] 파이썬 all/any 함수

all 인자로 받은 반복 가능한 자료형(iterable)의 모든 요소가 참이면 참을 반환하는 함수다. 예를 들어보자. arr = [1, 2, 3, 4, 5] if all(i >> 성공! arr에 들어있는 모든 숫자가 10보다 작으므로 성공!이 출력된다. any 인자로 받은 반복 가능한 자료형(iterable)의 어느 하나의 요소가 참이면 참을 반환하는 함수다. 예를 들어보자. arr = [1, 2, 3, 4, 11] if any(i > 10 for i in arr): print("성공!") >>> 성공! arr에 들어있는 11이 10보다 크므로 성공!이 출력된다.

[Python 정리] 독스트링, python/python3, 빈 리스트 판별, 동적/정적 언어
◎ Python/알게된 것 정리2022. 9. 15. 20:35[Python 정리] 독스트링, python/python3, 빈 리스트 판별, 동적/정적 언어

Docstring(독스트링) 앞으로 함수를 생성할 때, 주석으로 해당 함수를 설명하기 보다는 독스트링을 사용하는 것도 좋을 것 같다. def sample(): """이 함수는 안녕을 출력하는 함수이다.""" print("안녕") sample() >>> 안녕 python/python3 python 명령어로 실행하는 것과 python3 명령어로 실행할 때 성능 차이가 난다. 어차피 최근 프로그래밍 하는 것들은 대부분 python3이니 해당 명령어를 사용하는 것이 좋다. 물론 python2 이하 환경에서 작성된 코드를 python3 명령어로 실행시키면 오류가 날 수도 있다. 호환되지 않는 변경사항이 포함되어 있기 때문이다. 빈 리스트 판별 비어 있는 리스트를 판별할 때 C++에서부터 항상 len(arr) ==..

image