• 티스토리 홈
  • 프로필사진
    31514
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
31514
  • 프로필사진
    31514
    • 분류 전체보기 (106)
      • Book (66)
        • Learning SQL (9)
        • SQL 레벨업 (8)
        • 견고한 데이터 엔지니어링 (5)
        • 운영체제 (2)
        • 스파크 완벽 가이드 (9)
        • 파이썬 코딩의 기술 (29)
        • 분산 컴퓨팅 (4)
      • 개발 (24)
      • 기타 (10)
        • 출퇴근 공부 간단 정리 (7)
      • ELK (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
      • 31514의 이전 블로그는 여기로!
      등록된 공지가 없습니다.
    # Home
    # 공지사항
    #
    # 태그
    # 검색결과
    # 방명록
    • [BW 13] 슬라이싱보다는 나머지를 모두 잡아내는 언패킹을 사용하라
      2024년 10월 22일
      • 31514
      • 작성자
      • 2024.10.22.오후04:11

      아래와 같은 코드는 ages의 요소가 추가되거나 삭제되었지만, 다른 줄에서 깜빡하고 수정하지 않으면 의도하지 않은 결과를 초래할 수 있다.

      ages = [20, 19, 18, 17, 16, 15, 14, 13]
      
      oldest, second_oldest, others = ages[0], ages[1], ages[2:]
      print(oldest, second_oldest, others)
      
      >>>
      20 19 [18, 17, 16, 15, 14, 13]
      

      따라서 별표 식을 사용해 모든 값을 담는 언패킹을 사용하면 좋다.

      ages = [20, 19, 18, 17, 16, 15, 14, 13]
      
      oldest, second_oldest, *others = ages
      print(oldest, second_oldest, others)
      
      >>>
      20 19 [18, 17, 16, 15, 14, 13]
      

      하지만 다음과 같은 조건에서는 별표 식 언패킹을 사용할 수 없다.

      ages = [20, 19, 18, 17, 16, 15, 14, 13]
      
      # 별표 식만 있을 때
      *others = ages
      # 별표 식이 두 개 이상 사용할 때
      first, *middle, *second_middle, last = ages
      

      여러 계층으로 이뤄진 구조를 언패킹할 때는 서로 다른 부분에 포함되는 한, 별표 식을 여럿 사용해도 된다.

      car_inventory = {
          '시내' : ('그랜저', '아반떼', '티코'),
          '공항' : ('제네시스 쿠페', '소나타', 'K5', '엑센트'),
      }
      
      ((loc1, (best1, *rest1)), (loc2, (best2, *rest2))) = car_inventory.items()
      
      print(f'{loc1} 최고는 {best1}, 나머지는 {len(rest1)} 종')
      print(f'{loc2} 최고는 {best2}, 나머지는 {len(rest2)} 종')
      
      >>>
      시내 최고는 그랜저, 나머지는 2 종
      공항 최고는 제네시스 쿠페, 나머지는 3 종
      

      만약 언패킹하는 시퀀스에 남는 원소가 없다면 빈 리스트를 반환한다.

      arr = [1, 2]
      first, second, *rest = arr
      print(first, second, rest)
      
      >>>
      1 2 []
      

      하지만 별표 식은 항상 리스트를 만들어내기 때문에 언패킹하는 데이터가 클 경우 컴퓨터 메모리를 모두 사용할 수 있다.

      'Book > 파이썬 코딩의 기술' 카테고리의 다른 글

      [BW 18] __missing__을 사용해 키에 따라 다른 디폴트 값을 생성하는 방법  (0) 2024.10.22
      [BW 14] 복잡한 기준을 사용해 정렬할 때는 key 파라미터를 사용하라  (1) 2024.10.22
      [BW 12] 스트라이드와 슬라이스를 한 식에 함께 사용하지 말라  (0) 2024.10.22
      [BW 11] 시퀀스를 슬라이싱하는 방법을 익혀라  (0) 2024.10.22
      [BW 10] 대입식을 사용해 반복을 피하라  (0) 2024.10.22
      다음글
      다음 글이 없습니다.
      이전글
      이전 글이 없습니다.
      댓글
    조회된 결과가 없습니다.
    스킨 업데이트 안내
    현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
    ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
    목차
    표시할 목차가 없습니다.
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바

      개인정보

      • 티스토리 홈
      • 포럼
      • 로그인

      단축키

      내 블로그

      내 블로그 - 관리자 홈 전환
      Q
      Q
      새 글 쓰기
      W
      W

      블로그 게시글

      글 수정 (권한 있는 경우)
      E
      E
      댓글 영역으로 이동
      C
      C

      모든 영역

      이 페이지의 URL 복사
      S
      S
      맨 위로 이동
      T
      T
      티스토리 홈 이동
      H
      H
      단축키 안내
      Shift + /
      ⇧ + /

      * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.