파이썬 컬렉션 관리

2021. 8. 24. 10:42·SW개발/Python
반응형

컬렉션 관리

컬렉션 관리 함수

enumerate

  • 시퀀스의 인덱스와 요소를 튜플로 묶어서 순회한다.

    enumerate(시퀀스 [, start])
    race = ['저그', '테란', '프로토스']
    print(list(enumerate(race)))
    
    ''' stdout
    [(0, '저그'), (1, '테란'), (2, '프로토스')]
    '''
  • 시작 숫자를 정할 수 있다.

    score = [88, 95, 70, 100, 99]
    
    for no, s in enumerate(score, 1):
        print(f"{no}번 학생의 성적 : {s}")
    
    ''' stdout
    1번 학생의 성적 : 88
    2번 학생의 성적 : 95
    3번 학생의 성적 : 70
    4번 학생의 성적 : 100
    5번 학생의 성적 : 99
    '''
  • 언팩해서 쓰면 좋다.

zip

  • 시퀀스 두 개를 순서대로 튜플로 묶어서 zip 객체로 반환한다.

    • 길이가 다를 경우 짧은 길이에 맞춘다.
  • 예시

    dates = ["월", "화", "수", "목", "금", "토", "일"]
    food = ["갈비탕", "순대국", "칼국수", "삼겸살"]
    menu = zip(dates, food)
    for d, f in menu:
        print(f"{d}요일 메뉴 : {f}")
    
    ''' stdout
    월요일 메뉴 : 갈비탕
    화요일 메뉴 : 순대국
    수요일 메뉴 : 칼국수
    목요일 메뉴 : 삼겸살
    '''
  • list(집객체) 등으로 한번 순회하고 나면 데이터가 사라진다.

    • zip 객체는 제너레이터 함수로 구성되어 있기 때문이다.

any, all

  • any(시퀀스)

    • 시퀀스에 하나라도 True가 있으면 True 반환
  • all(시퀀스)

    • 시퀀스의 모든 요소가 True이면 True 반환
  • 예시

    adult = [True, False, True, False]
    print(any(adult))
    print(all(adult))
    
    ''' stdout
    True
    False
    '''

람다 함수

filter

  • 시퀀스의 각 요소를 판정함수에 전달하여 True를 리턴하는 요소로만 구성된 새로운 시퀀스를 리턴한다.

    filter(판정함수, 시퀀스) -> 시퀀스 # "->"는 반환 자료형을 의미한다.

map

  • 시퀀스를 변환함수에 전달하여 map 객체를 리턴한다.

    map(변환함수, 시퀀스[, 시퀀스])
  • 여러 시퀀스를 넣을 수 있다. 이 때 함수의 인수 개수와 일치해야 한다.

    def add(s, b):
        return s + b
    
    score = [45, 89, 72, 53, 94]
    bonus = [2, 3, 0, 0, 5]
    
    for s in map(add, score, bonus):
        print(s, end = ", ")
    
    ''' stdout
    47, 92, 72, 53, 99,
    '''

람다 함수

  • 이름이 없는 한 줄짜리 함수이다.

    lambda 인수: 식
  • 예시

    score = [ 45, 89, 72, 53, 94 ]
    
    for s in filter(lambda x: x < 60, score):
        print(s)
    
    ''' stdout
    45
    53
    '''
  • 파이썬은 들여쓰기로 줄을 구분하기 때문에, 한 줄밖에 쓰지 못한다.


컬렉션의 사본

시퀀스의 사본

  • 원시타입이 아닌 자료형은 기본적으로 대입할 때 Call by Reference이므로 같은 객체이다.

  • 새로운 객체를 만들려면 copy 메서드를 사용해야 한다.

    시퀀스.copy()
    list1 = [1, 2, 3]
    list2 = list1.copy() # list2 = list1[:]와 동일
    print(list1 == list2)
    list2[1] = 100
    print(list1)
    print(list2)
    print(list1 == list2)
    
    ''' stdout
    True
    [1, 2, 3]
    [1, 100, 3]
    False
    '''
  • Deep Copy를 하기 위해서는 deepcopy 메서드를 사용한다.

    import copy
    list0 = ['a', 'b']
    list1 = [list0, 1, 2]
    list2 = copy.deepcopy(list1) # 깊은 복사
    list2[0][1] = 'c'
    print(list1)
    print(list2)
    
    ''' stdout
    [['a', 'b'], 1, 2]
    [['a', 'c'], 1, 2]
    '''

is 연산자

  • 두 변수가 같은 객체를 가리키는지 조사할 수 있다.

    list1 = ['a', 'b']
    list2 = list1
    list3 = list1.copy() # 얕은 복사
    print("list1 is list2 :", list1 is list2)
    print("list1 is list3 :", list1 is list3)
    print("list2 is list3 :", list2 is list3)
    
    ''' stdout
    list1 is list2 : True
    list1 is list3 : False
    list2 is list3 : False
    '''
반응형
저작자표시 (새창열림)

'SW개발 > Python' 카테고리의 다른 글

파이썬 예외 처리  (0) 2021.08.24
파이썬 표준 모듈  (0) 2021.08.24
파이썬 집합(Set)  (0) 2021.08.22
파이썬 사전(Dictionary)  (0) 2021.08.22
파이썬 튜플(Tuple)  (0) 2021.08.22
'SW개발/Python' 카테고리의 다른 글
  • 파이썬 예외 처리
  • 파이썬 표준 모듈
  • 파이썬 집합(Set)
  • 파이썬 사전(Dictionary)
Caniro
Caniro
  • Caniro
    Minimalism
    Caniro
  • 전체
    오늘
    어제
    • 전체보기 (319)
      • SW개발 (268)
        • Java Spring (6)
        • C++ (186)
        • Python (21)
        • Linux (16)
        • 알고리즘 (13)
        • Git (4)
        • Embedded (1)
        • Raspberrypi (9)
        • React (3)
        • Web (2)
        • Windows Device Driver (6)
      • IT(개발아님) (46)
        • Windows (26)
        • MacOS (7)
        • Utility (11)
      • 챗봇 짬통 (0)
      • 일상 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스프링
    백기선
    spring
    Windows 11
    mspaint
    윈도우
    EXCLUDE
    시스템 복구
    MacOS
    Workspace
    SunOS 5.1
    Solaris 10
    vscode
    로지텍 마우스 제스처
    맥북 카카오톡 알림 안뜸
    알림
    dism
    unix
    윈도우 명령어
    java
    SFC
    그림판
    스프링 프레임워크 핵심 기술
    windows
    KakaoTalk
    logi options
    citrix workspace
    제외
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Caniro
파이썬 컬렉션 관리
상단으로

티스토리툴바