본문 바로가기
728x90

IT/파이썬 라이브러리 (Python)22

#022 파이썬 라이브러리 : iterator 이터레이터 객체를 이해하자 python 파이썬 라이브러리 iterator #022 파이썬 라이브러리 : iterator 이터레이터 객체를 이해하자 파이썬에서 효율적으로 코드를 작성하기 위해서는 이터레이터(iterator)를 이해하여야 합니다. 번역하면 '반복자'로 번역되는데 그냥 이터레이터로 칭합니다.. 이터레이터(iterator)란 반복가능한 객체 즉, 반복문을 활용해서 데이터를 순회하면서 처리하는 것을 의미합니다. 파이썬에서 이터레이터(iterator)는 여러 개의 요소를 가지는 컨테이너(리스트, 튜플, 셋, 사전, 문자열 등)에서 각 요소를 하나씩 꺼내 어떤 처리를 수행하는 간편한 방법을 제공하는 객체입니다. iterable(반복가능) vs iterator(반복자) 내부 요소(member)를 하나씩 리턴할 수 있는 객체를 보.. 2023. 4. 17.
#021 파이썬 라이브러리 : statistics 통계 함수의 활용 Python 파이썬 라이브러리 statistics #021 파이썬 라이브러리 : statistics 통계 함수의 활용 Python에는 데이터 세트에 대한 통계 작업을 수행하는 다양한 기능을 제공하는 statistics 내장 통계 모듈이 있습니다. 이 모듈에서는 중심 경향 측정, 분산 측정, 상관 계수 등을 계산하기 위한 함수를 찾을 수 있습니다. 평균 계산 평균은 숫자 집합의 평균입니다. statistics 모듈의 mean() 함수를 사용하여 평균을 계산할 수 있습니다. import statistics data = [10, 20, 30, 40, 50] mean = statistics.mean(data) print(mean) ▶ 결과 30 중앙값 계산 중앙값은 정렬된 숫자 집합의 중간 값입니다. stati.. 2023. 4. 16.
#020 파이썬 라이브러리 : random 난수를 사용하는 방법 Python 파이썬 라이브러리 random #020 파이썬 라이브러리 : random 난수를 사용하는 방법 파이썬 random 모듈은 시뮬레이션, 게임 및 암호화와 같은 다양한 응용 프로그램에서 사용할 수 있는 의사 난수를 생성할 수 있는 함수 집합을 제공합니다. 가장 일반적으로 사용되는 함수는 동일한 확률 분포로 0과 1(0은 포함하고 1은 제외) 사이의 임의의 부동 소수점 숫자를 생성하는 random()입니다. 일반적인 random 사용 방법 import random # Generate a random float number between 0 and 1 random_number = random.random() print(random_number) ▶ 결과 0.7247538406590574 ▶ 설명 이.. 2023. 4. 15.
#019 파이썬 라이브러리 : fractions 정확한 유리수 계산 Python 파이썬 라이브러리 fractions #019 파이썬 라이브러리 : fractions 정확한 유리수 계산 저번 포스팅에서 부동소수점 연산의 미묘한 오차에 대해서 이야기했습니다. 이 미묘한 오차는 분수의 연산에서도 발생합니다. 파이썬의 fractions 모듈은 유리수의 정확한 계산에 사용하는 모듈입니다. 유리수(rational number) rational number 는 "비율이 있는 수"이다. 즉, 분수(정수비)로 나타낼 수 있는 수를 말한다. 단, 분모가 0이 아니어야 한다. 모든 정수는 분모가 1이므로 유리수이다. 분수 계산의 미묘한 오차 from fractions import Fraction print(0.1 + 0.2) print(1/10 + 1/5) print(float(Fracti.. 2023. 4. 14.
#018 파이썬 라이브러리 : decimal.Decimal 부동소수점 10진수 연산 파이썬 라이브러리 decimal.Decimal #018 파이썬 라이브러리 : decimal.Decimal 부동소수점 10진수 연산 파이썬에서 부동소수점 연산은 미묘한 오차가 발생합니다. 이러한 오류는 10진법으로 표현할 때 끝자리에 해당하는 수를 이진수로 변환할 때 발생합니다. 이진수로 정확하게 변환할 수 없는 숫자는 근사치로 표시됩니다. 때문에 같은 숫자라도 부동소수점으로 표현할 경우 연산 결과가 예상치 못한 값으로 나오는 경우가 있습니다. 이럴 때 decimal.Decimal 모듈의 10진수 연산을 사용하여 정확한 소수점 자릿수를 표현할 수 있습니다. 미세한 오류 예제 a = 0.1 b = 0.2 c = 0.3 # 연산 print(a + b) # 비교 print((a + b) == c) ▶ 결과 0... 2023. 4. 13.
#017 파이썬 라이브러리 : math.lcm 최소공배수의 활용 파이썬 라이브러리 math.lcm #017 파이썬 라이브러리 : math.lcm 최소공배수의 활용 Python의 math.lcm 함수는 두 개 이상의 숫자에 대한 최소 공배수(LCM)를 찾는 데 사용됩니다. LCM은 두 개 이상의 주어진 숫자의 배수인 가장 작은 숫자입니다. math.lcm 함수는 Python의 math 모듈의 일부이며 모듈을 가져와서 사용할 수 있습니다. math.lcm 함수는 입력 숫자를 가져와 소인수를 찾는 방식으로 작동합니다. 그런 다음 공통 인수를 찾아 곱하여 최소공배수를 얻습니다. LCM이 출력으로 반환됩니다. 세 개 이상의 숫자의 최소공배수 찾기 예를 들어 8, 12, 16이라는 세 숫자의 최소공배수를 구한다고 가정해 보겠습니다. 다음과 같이 math.lcm 함수를 사용하여 .. 2023. 4. 12.
#016 파이썬 라이브러리 : math.gcd 최대공약수의 활용 파이썬 라이브러리 math.gcd #016 파이썬 라이브러리 : math.gcd 최대공약수의 활용 파이썬 math 라이브러리에는 수많은 함수가 존재합니다. 그중에 이번 시간에는 math.gcd 함수에 대해서 알아봅니다. Python의 math.gcd() 함수는 둘 이상의 정수의 최대 공약수를 반환하는 내장 수학 함수입니다. 이 함수는 두 개 이상의 숫자 사이에서 최대 공약수를 찾는 데 필요한 다양한 실생활 응용 프로그램에서 널리 사용됩니다. 예제 : 분수 단순화 이 프로그램은 사용자에게 분수를 입력하라는 메시지를 표시하고 math.gcd() 함수를 사용하여 최대 공약수를 찾아 단순화합니다. # -*- coding:utf-8 -*- import math numerator = int(input("분자 입력:.. 2023. 4. 11.
#015 파이썬 라이브러리 : graphlib.TopologicalSorter 위상정렬을 알아보자 파이썬 라이브러리 graphlib.TopologicalSorter #015 파이썬 라이브러리 : graphlib.TopologicalSorter 위상정렬을 알아보자 위상정렬은 DAG(방향성 비순환 그래프)의 정점을 방향성 에지에 의해 부과된 순서 제약 조건을 충족하는 방식으로 정렬하는 데 사용되는 기본 알고리즘 기술입니다. graphlib 모듈은 Python의 표준 라이브러리에 포함되어 있으며 DAG에서 위상정렬을 수행하는 데 사용할 수 있는 TopologicalSorter 클래스를 제공합니다. TopologicalSorter 클래스를 사용하려면 먼저 해결하려는 문제를 나타내는 DAG를 만들어야 합니다. 이 DAG에서 각 정점은 작업 또는 이벤트를 나타내며 정점 A에서 정점 B로 향하는 가장자리는 작업 .. 2023. 4. 10.
#014 파이썬 라이브러리 : enum으로 가독성을 높이자 파이썬 라이브러리 enum #014 파이썬 라이브러리 : enum으로 가독성을 높이자 Python에서 enum 데이터 유형은 코드 가독성과 유지 관리성을 향상할 수 있는 고유한 유형으로 명명된 값 세트를 정의하는 방법을 제공합니다. enum 데이터 유형을 사용하면 프로그래머가 프로그램 전체에서 사용할 수 있는 고유한 이름과 값을 가진 일련의 상수를 정의할 수 있습니다. 예 제 from enum import Enum class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 favorite_color = Color.BLUE print(favorite_color) print(favorite_color.name) print(favorite_color.value) ▶ 결과 Color.BL.. 2023. 4. 9.
#013 파이썬 라이브러리 : bisect를 이용한 학점 부여 파이썬 라이브러리 bisect #013 파이썬 라이브러리 : bisect를 이용한 학점 부여 Python의 bisect 모듈은 정렬된 순서를 유지하기 위해 요소를 삽입해야 하는 정렬된 목록의 위치를 ​​찾는 데 사용되는 bisect()라는 함수를 제공합니다. 이 함수는 정렬된 목록과 삽입할 요소의 두 가지 인수를 사용합니다. bisect() 함수는 요소가 삽입되어야 하는 인덱스를 반환합니다. 요소가 목록에 이미 있는 경우 함수는 왼쪽이 아닌 오른쪽으로 삽입되는 인덱스를 반환합니다. bisect() 함수의 구문 bisect.bisect(sorted_list, element, lo=0, hi=len(sorted_list)) ▶ 설명 여기서 sorted_list는 요소가 삽입될 정렬된 목록이고 element는.. 2023. 4. 8.
#012 파이썬 라이브러리 : pprint 데이터를 읽기 쉽게 출력 파이썬 라이브러리 pprint #012 파이썬 라이브러리 : pprint 데이터를 읽기 쉽게 출력 Python pprint(pretty-print) 모듈은 사전, 목록 및 튜플과 같은 복잡한 데이터 구조의 형식을 제어하는 쉬운 방법을 제공하는 유틸리티입니다. 보다 읽기 쉬운 형식으로 데이터 구조를 인쇄하는 데 사용할 수 있으며, 이는 출력의 가독성이 중요한 디버깅 및 기타 작업에 특히 유용합니다. pprint 예제 import pprint # Define a complex data structure data = {'name': 'John Doe', 'age': 28, 'address': {'street': '123 Main St', 'city': 'Anytown', 'state': 'CA'}, 'phon.. 2023. 4. 7.
#011 파이썬 라이브러리 : heapq를 이용한 순위 매기기 파이썬 라이브러리 heapq #011 파이썬 라이브러리 : heapq를 이용한 순위 매기기 Python heapq 모듈은 우선순위 큐 알고리즘인 힙 큐 알고리즘의 구현을 제공합니다. heapq 모듈은 힙에서 요소를 추가, 제거 및 조작하기 위해 heappush, heappop, heappushpop, heapreplace 및 nlargest와 같은 기능을 제공합니다. 힙 큐 알고리즘은 컬렉션에서 가장 작은(또는 가장 큰) 요소에 빠르게 액세스해야 하는 애플리케이션에 유용한 데이터 구조입니다. 즉, heapq는 순위가 가장 높은 자료(data)를 가장 먼저 꺼내는 우선순위 큐를 구현한 모듈입니다. 리스트 등을 사용하여 우선순위 큐를 직접 구현하기가 어렵진 않지만, 이보다는 이런 작업에 최적화된 모듈인 he.. 2023. 4. 6.
#010 파이썬 라이브러리 : collections.defaultdict 딕셔너리 생성 및 초기화 한방에 파이썬 라이브러리 collections.defaultdict collections.defaultdict 딕셔너리 생성 및 초기화 한방에 Python의 collections.defaultdict는 기본값으로 딕셔너리를 생성하기 위한 Python의 강력한 도구입니다. 누락된 키에 대한 기본값을 제공하여 코드를 단순화하는 다재다능하고 효율적인 데이터 구조입니다. defaultdict를 사용하면 보다 간결하고 효율적인 코드를 작성할 수 있고 딕셔너리에 키가 있는지 명시적으로 확인하지 않아도 됩니다. 예 제 파이선을 표현한 문장 "Life is too short, You need python."을 사용한 문자(key)와 해당 문자의 사용 횟수(value)를 딕셔너리로 만들려면 어떻게 해야 할까요? string =.. 2023. 4. 5.
#009 파이썬 라이브러리 : collections.Counter 사용된 단어 수를 세는 파이썬 라이브러리 collections.Counter #009 파이썬 라이브러리 : collections.Counter 사용된 단어 수를 세는 Python의 collections.Counter는 목록, 튜플 또는 문자열과 같은 컬렉션의 항목 발생 횟수를 계산하는 편리한 방법을 제공하는 내장 클래스입니다. 이것은 Python의 사전 데이터 유형의 하위 클래스로 구현되므로 사전의 모든 기능을 제공하며 개수를 추적하는 기능이 추가되었습니다. collections.Counter 사용 예제 collections.Counter를 사용하려면 먼저 인수로 계산할 컬렉션을 전달하여 클래스의 인스턴스를 만듭니다. 예를 들어, 다음 코드는 과일 목록에 대한 카운터를 만듭니다. from collections import Co.. 2023. 4. 4.
#008 파이썬 라이브러리 : collections.namedtuple 자료에 이름을 붙이는 파이썬 라이브러리 collections.namedtuple #008 파이썬 라이브러리 : collections.namedtuple 자료에 이름을 붙이는 Python의 collections 모듈은 내장 유형의 확장인 특수 컨테이너 데이터 유형 세트를 제공합니다. 이러한 데이터 유형 중 하나는 이름이 지정된 필드가 있는 튜플 객체의 하위 클래스인 namedtuple이라고 하며, 더 읽기 쉽고 자체 문서화 코드를 허용합니다. namedtuple 함수 namedtuple은 튜플 클래스에서 상속된 새 클래스를 반환하는 팩토리 함수입니다. 클래스는 동적으로 생성되며 사용자가 정의한 고정 속성 세트를 가집니다. 이러한 특성은 일련의 문자열 또는 공백으로 구분된 단일 문자열로 지정된 다음 별도의 필드 이름으로 분할됩니.. 2023. 4. 3.
#007 파이썬 라이브러리 : collections.deque 자료의 양쪽 끝에서 삽입 삭제 파이썬 라이브러리 collections.deque #007 파이썬 라이브러리 : collections.deque 자료의 양쪽 끝에서 삽입 삭제 Python collections.deque는 큐의 양쪽 끝에서 요소의 효율적인 삽입 및 삭제를 지원하는 컨테이너입니다. 이중 링크 목록을 사용하여 구현되며 큐의 양쪽 끝에서 요소에 액세스 하고 수정하기 위한 O(1) 시간 복잡성을 제공합니다. O(1) 시간 복잡성이란 일정한 복잡도(constant complexity)라고 하며, 입력값이 증가하더라도 시간이 늘어나지 않는다는 것을 의미합니다. 다시 말해 입력값의 크기와 관계없이, 즉시 출력값을 얻어낼 수 있다는 의미입니다. 즉, deque는 앞과 뒤에서 데이터를 처리할 수 있는 양방향 자료형으로, 스택(stack.. 2023. 4. 2.
#006 파이썬 라이브러리 : calendar.isleap 윤년 계산 파이썬 라이브러리 calendar.isleap #006 파이썬 라이브러리 : calendar.isleap 윤년 계산 생일이 2월 29일인 분은 4년마다 찐 생일을 맞이하시겠지요. 엄밀히 말하면, 4년 마다가 아니죠. 100년마다 평년, 400년마다 윤년이 적용되니 좀 더 복잡해집니다. 윤년을 정하는 규칙 우리가 사용 중인 그레고리력에서 윤년을 정하는 규칙은 다음과 같습니다. 1. 서력기원 연수가 4로 나누어 떨어지는 해는 윤년으로 한다. 2. 서력기원 연수가 4, 100으로 나누어 떨어지는 해는 평년으로 한다. 3. 서력기원 연수가 4, 100, 400으로 나누어 떨어지는 해는 윤년으로 둔다. 즉, 윤년은 100으로 나누어 떨어지지만 400으로 나누어 떨어지지 않는 해를 제외하고 4년마다 발생합니다. 예.. 2023. 4. 1.
#005 파이썬 라이브러리 : datetime.timedelta 날짜 간의 차이 및 계산 파이썬 라이브러리 datetime.timedelta #005 파이썬 라이브러리 : datetime.timedelta 날짜 간의 차이 및 계산 datetime.timedelta는 기간을 나타내는 데 사용되는 Python 모듈입니다. 날짜와 시간에 대한 산술 연산을 수행하고 주어진 날짜에서 시간을 더하거나 빼며 두 날짜 또는 시간의 차이를 측정할 수 있습니다. 지난 시간에 datetime.timedelta에 대해서 예제에 나온 적이 있지만 이번 시간에 더 자세히 알아보겠습니다. timedelta 객체 생성 timedelta 객체를 생성하려면 datetime.timedelta() 생성자를 사용할 수 있습니다. 일, 초, 마이크로초, 밀리초, 분, 시간 및 주에 대한 인수를 전달할 수 있습니다. 항목 설명 da.. 2023. 3. 31.
#004 파이썬 라이브러리 : datetime.date 날짜 및 요일 계산 파이썬 라이브러리 datetime.date #004 파이썬 라이브러리 : datetime.date 날짜 및 요일 계산 Python에서 datetime 모듈은 datetime.date, datetime.time 및 datetime.datetime 클래스를 포함하여 날짜 및 시간 작업을 위한 클래스를 제공합니다. datetime.date 클래스는 년, 월, 일로 구성된 날짜를 나타내는 데 사용됩니다. 날짜 개체는 변경할 수 없습니다. 즉, 일단 생성되면 해당 값을 변경할 수 없습니다. 파이썬에서 날짜 이해하기 날짜 객체 Python의 날짜 객체는 datetime.date 클래스를 사용하여 생성됩니다. 날짜 개체는 특정 날짜를 나타내며 날짜 산술 및 비교와 같은 다양한 작업을 수행하는 데 사용할 수 있습니다... 2023. 3. 30.
#003 파이썬 라이브러리 : re 정규 표현식으로 개인정보 보호 파이썬 라이브러리 re, 주민번호 마스킹 #003 파이썬 라이브러리 : re 정규 표현식으로 개인정보 보호 오늘날 세계에서는 개인 정보의 프라이버시가 가장 중요합니다. 보호가 필요한 정보 중 하나는 사회보장번호(SSN)입니다. SSN은 미국 정부가 시민과 거주자에게 발급하는 고유한 9자리 숫자로, 다양한 거래에서 기본 식별자 역할을 합니다. 한국에서도 주민번호가 보호되어야 합니다. 사회보장번호(SSN)나 주민번호를 보호하는 파이썬에서의 한 가지 방법은 re 모듈에서 정규식(regex)을 사용하여 마스킹하는 것입니다. 정규식(regex)은 문자열을 일치시키고 조작하는 데 사용할 수 있는 검색 패턴을 정의하는 일련의 문자입니다. 정규식을 사용하여 문자열에서 SSN 패턴을 검색하고 별표 또는 다른 문자로 바꿀.. 2023. 3. 29.
#002 파이썬 라이브러리 : textwrap.shorten 문자열 축약 표시 파이썬 라이브러리 textwrap.shorten #002 파이썬 라이브러리 : textwrap.shorten 문자열 축약 표시 때로는 제목이나 내용 미리 보기가 너무 길어 줄여 표시했으면 할 때가 있습니다. 파이썬의 textwrap 모듈은 중간에서 문자를 제거하고 줄임표(...)를 추가하여 텍스트가 제거된 위치를 표시함으로써 긴 문자열을 줄이는 데 사용할 수 있는 shorten()이라는 메서드도 제공합니다. 이 방법은 너무 길어서 주어진 콘텍스트에 표시할 수 없는 긴 문자열을 자르는 데 유용합니다. 예 제 다음은 shorten() 메서드를 사용하는 방법의 예입니다. # Filename : textwrap_shorten.py import textwrap text = "This is a very long s.. 2023. 3. 28.
#001 파이썬 라이브러리 : textwrap.wrap 문자열 줄바꿈 처리 파이썬 라이브러리 textwrap.wrap #001 파이썬 라이브러리 : textwrap.wrap 문자열 줄바꿈 처리 textwrap.wrap()은 긴 문자열을 원하는 길이로 줄 바꿈(wrapping)할 때 사용하는 함수이다. 문자열 래핑은 문자열이 너무 길어질 때 원하는 길이로 줄 바꿈 할 때도 도움이 된다. textwrap을 사용하려면 먼저 Python 스크립트의 시작 부분에 import textwrap을 추가하여 모듈을 가져옵니다. textwrap 모듈의 일반적인 용도 중 하나는 텍스트를 특정 너비로 ​​포맷하는 것입니다. 이렇게 하려면 textwrap.wrap() 메서드를 사용하세요. 이 메서드는 줄 바꿈(wrapping)할 텍스트와 각 줄의 최대 너비라는 두 가지 인수를 사용합니다. 예 제 # .. 2023. 3. 27.
728x90