• 티스토리 홈
  • 프로필사진
    31514
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
31514
  • 프로필사진
    31514
    • 분류 전체보기 (106)
      • Book (66)
        • Learning SQL (9)
        • SQL 레벨업 (8)
        • 견고한 데이터 엔지니어링 (5)
        • 운영체제 (2)
        • 스파크 완벽 가이드 (9)
        • 파이썬 코딩의 기술 (29)
        • 분산 컴퓨팅 (4)
      • 개발 (24)
      • 기타 (10)
        • 출퇴근 공부 간단 정리 (7)
      • ELK (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
      • 31514의 이전 블로그는 여기로!
      등록된 공지가 없습니다.
    # Home
    # 공지사항
    #
    # 태그
    # 검색결과
    # 방명록
    • 포스트글 썸네일 이미지
      [BW 37] 내장 타입을 여러 단계로 내포시키기보다는 클래스를 합성하라
      31514:
      클래스와 상속을 사용하는 방법을 잘 알아두면 유지 보수하기 쉬운 코드를 작성할 수 있다. 파이썬 내장 딕셔너리 타입을 사용하면 객체의 생명 주기 동안 동적인 내부 상태를 잘 유지할 수 있다.동적이라는 말은 어떤 값이 들어올지 미리 알 수 없는 식별자들을 유지해야 한다는 뜻이다.예를 들어 학생들의 점수를 기록해야 하는데, 이름은 미리 알 수 없는 상황이라고 하자.class SimpleGradeBook: def __init__(self): self._grades = {} def add_student(self, name): self._grades[name] = [] def report_grade(self, name, score): self._..
      • 2024-11-11 11:20:24
    • 포스트글 썸네일 이미지
      [BW 33] yield from을 사용해 여러 제너레이터를 합성하라
      31514:
      다음은 제너레이터를 사용해 화면의 이미지를 움직이게 하는 그래픽 프로그램 예제이다.처음에는 이미지가 빠르게 이동하고, 잠시 멈춘 다음, 다시 이미지가 느리게 이동한다.def move(period, speed): for _ in range(period): yield speeddef pause(delay): for _ in range(delay): yield 0def animate(): for delta in move(4, 5.0): yield delta for delta in pause(3): yield delta for delta in move(2, 3.0): yield deltadef render(delta): ..
      • 2024-11-08 10:52:39
    • 포스트글 썸네일 이미지
      [BW 32] 긴 리스트 컴프리헨션보다는 제네레이터 식을 사용하라
      31514:
      리스트 컴프리헨션의 입력이 커지면 메모리를 상당히 많이 사용하고, 그로 인해 프로그램이 중단될 수 있다. 이 문제를 해결하기 위해 파이썬은 제네레이터 식을 제공한다.제네레이터 식을 실행해도 출력 시퀀스 전체가 실체화되지 않고, 이터레이터가 생성된다.it = (len(x) for x in open('my_file.txt'))  두 제네레이터 식을 합성할 수도 있다.roots = ((x, x ** 0.5) for x in it)  다만 제네레이터가 반환하는 이터레이터에는 상태가 있기 때문에 한 번만 사용해야 한다.
      • 2024-11-01 16:10:28
    • 포스트글 썸네일 이미지
      [BW 31] 인자에 대해 이터레이션할 때는 방어적이 돼라
      31514:
      입력 전체의 합계를 내고 각 원소를 나누는 정규화 함수가 있다고 하자.def normalize(numbers): total = sum(numbers) result = [] for v in numbers: percent = 100 * v / total result.append(percent) return result 이 함수에 데이터가 들어 있는 리스트를 입력하면 잘 작동한다.visits = [15, 35, 80]percetages = normalize(visits)print(percetages)>>>[11.538461538461538, 26.923076923076923, 61.53846153846154] 코드의 확장성을 높이기 위해 데이터를 파일에서 읽어온다..
      • 2024-10-31 11:01:23
    • 포스트글 썸네일 이미지
      [BW 30] 리스트를 반환하기보다는 제너레이터를 사용하라
      31514:
      리스트에 결과를 추가하고 반환하는 코드는 잡음이 많고, 모든 결과를 리스트에 다 저장해야 하므로 메모리를 많이 소진한다.def index_words(text): result = [] if text: result.append(0) for index, letter in enumerate(text): if letter == ' ': result.append(index + 1) return resultaddress = '서울특별시 양천구 목동동로 12길 60'result = index_words(address)print(result)>>>[0, 6, 10, 15, 19] 제네레이터를 사용하면 함수 내부에서 리스트와 상호작용하는 코드가 사라지므로 ..
      • 2024-10-30 10:52:19
    • 포스트글 썸네일 이미지
      [BW 29] 대입식을 사용해 컴프리헨션 안에서 반복 작업을 피하라
      31514:
      회사에서 주문을 관리하기 위한 프로그램을 작성한다고 하자.고객의 주문 요청이 재고 수량을 넘지 않아야 한다.stock = { '못': 125, '나사못': 35, '나비너트': 8, '와셔': 24,}order = ['나사못', '나비너트', '클립']def get_batches(count, size): return count // sizeresult = {}for name in order: count = stock.get(name, 0) batches = get_batches(count, 8) if batches: result[name] = batchesprint(result)>>>{'나사못': 4, '나비너트': 1} 위 코드를 컴프리헨션으로 바..
      • 2024-10-29 14:41:32
    • 포스트글 썸네일 이미지
      [BW 28] 컴프리헨션 내부에 제어 하위 식을 세 개 이상 사용하지 말라
      31514:
      컴프리헨션은 루프를 여러 수준으로 내포하도록 허용한다.예를 들어 리스트 안에 리스트가 들어 있는 형태로 정의한 행렬을 단일 리스트로 단순화하는 예제를 살펴보자.matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]flat = [x for row in matrix for x in row]print(flat)>>>[1, 2, 3, 4, 5, 6, 7, 8, 9] 또한, 컴프리헨션에서 다중 루프를 사용하는 예를 살펴보자.matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]squared = [[x ** 2 for x in row] for row in matrix]print(squared)>>>[[1, 4, 9], [16, 25, 36], [49, 64, 81]] 하지..
      • 2024-10-28 12:58:42
    • 포스트글 썸네일 이미지
      [BW 27] map과 filter 대신 컴프리헨션을 사용하라
      31514:
      파이썬에서는 컴프리헨션을 사용해 리스트, 딕셔너리, 집합 등을 간결하게 생성할 수 있다.a = [1, 2, 3]li = [x ** 2 for x in a]dic = {x: x ** 2 for x in a}s = {x ** 2 for x in a}print(li)print(dic)print(s)>>>[1, 4, 9]{1: 1, 2: 4, 3: 9}{1, 4, 9}
      • 2024-10-28 12:48:26
    조회된 결과가 없습니다.
    [1][2][3][4]
    스킨 업데이트 안내
    현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
    ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
    목차
    표시할 목차가 없습니다.
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바