300x250

목차

     

    3. 리스트(List) 자료형

    1) 리스트는 어떻게 만들고 사용할까?

    • 대괄호로 감싸주고, 각 요소값은 쉼표로 구분해준다

    • 리스트는 비어있을 수도 있고, 숫자, 문자열, 다른 리스트를 포함할 수도 있다.
    • 앞서 얘기했던 문자열의 인덱싱, 슬라이싱과 같은 방법으로 인덱싱, 슬라이싱 할 수 있다.

    인덱싱
    슬라이싱

     

    • 리스트 컴프리헨션 : 리스트를 초기화할 때, 대괄호 안에 조건문이나 반복문 등을 적용하여 리스트를 초기화하는 방법을 말한다.
    # 0부터 9까지의 수를 포함하는 리스트 초기화
    array = [i for i in range(10)]
    print(array)
    
    
    # 0부터 19까지의 수 중에서 홀수만 포함하는 리스트
    array = [i for i in range(20) if i % 2 == 1]
    
    
    # 1부터 9까지의 수들의 제곱 값을 포함하는 리스트
    array = [i * i for i in range(1,10)]
    
    
    # 4 * 3 크기의 2차원 리스트 초기화
    n = 4
    m = 3
    array = [[0] * m for _ in range(n)]
    
    # [[0,0,0], [0,0,0], [0,0,0], [0,0,0]]

     

    2) 리스트 연산하기

    (1) 리스트 더하기(+) : 2개의 리스트를 합한다.

    (2) 리스트 반복하기(*)

    (3) 리스트 길이 구하기

    len 함수를 이용하여 리스트 길이 구하기

     

    3) 리스트의 수정과 삭제

    (1) 리스트에서 값 수정

    새로운 값 할당을 통해 수정

    (2) 리스트 요소 삭제 : del 함수로 리스트의 특정 요소를 삭제한다.

    del 함수 사용
    슬라이싱으로 여러 요소를 한꺼번에 삭제

     

    4) 리스트 관련 함수

    (1) 요소 추가 : append (리스트의 맨 마지막에 요소 또는 리스트를 추가한다.)

    요소 추가
    리스트 추가

    (2) 리스트 정렬 : sort(list) (리스트의요소를 순서대로 정렬한다. - 기본적으로 오름차순, 알파벳순으로 정렬한다.)

    (3) 리스트 뒤집기 : reverse(list) (현재 리스트 순서를 역순으로 뒤집는다.)

    (4) 위치 반환 : index(x)

    (5) 리스트에 요소 삽입 : insert(a, b) (리스트 a번째 위치에 b를 삽입한다.)

    (6) 리스트 요소 제거 : remove(x) (리스트에서 첫 번째로 나오는 x를 삭제한다.)

    • 두 번째 x부터는 삭제하지 않는다. → 삭제하려면 별도로 함수를 작성해야 한다.

    # 리스트에서 특정 값을 갖는 원소를 모두 제거하기
    a = [1, 2, 3, 4, 5, 5, 5]
    remove_set = {3, 5} # 집합 자료형
    
    # remove_set에 포함되지 않은 값만 저장
    result = [i for i in a if i not in remove_set]
    
    # 결과 : [1, 2, 4]

     

    (7) 리스트 요소 끄집어내기 : pop() (리스트의 맨 마지막 요소 반환 후, 그 요소를 삭제한다.)

    pop(x) (리스트의 x번째 요소를 반환 후, 그 요소를 삭제한다.)

     

    (8) 리스트에 포함된 요소 x의 개수 세기 : count(x)

    (9) 리스트 확장 : extend(x) (x는 리스트만 가능하고, 원래 리스트에 x라는 리스트를 더하는 개념이다.)

     

     

     

    4. 튜플 자료형

    • 튜플과 리스트의 차이점

    1. 리스트는 []로, 튜플은 ()로 둘러싼다.
    2. 리스트는 그 값의 생성, 삭제, 수정이 가능하지만, 튜플은 값을 바꿀 수 없다.
    3. 튜플은 한 개의 요소를 가질 때에는 요소 뒤에 콤마를 반드시 붙여야 한다.
    4. 튜플은 괄호를 생략해도 된다.

    튜플의 모습

    → 이외에 인덱싱, 슬라이싱, 더하기, 곱하기, 길이 구하기 등의 방법은 리스트와 모두 같다.

     

    <튜플을 사용하면 좋은 경우>

    • 서로 다른 성질의 데이터를 묶어서 관리할 경우
      • 최단 경로 알고리즘에서 (비용, 노드 번호)의 형태로 튜플 자료형을 자주 사용한다.
    • 데이터의 나열을 Hashing의 키 값으로 사용해야 할 때
      • 튜플은 변경이 불가능하다. 따라서 리스트와 달리 키 값으로 사용할 수 있다.
    • 리스트보다 메모리를 효율적으로 사용해야 할 때 사용한다.

     

     

     

    5. 딕셔너리 자료형 : Key를 통해 Value를 얻음

    1) 딕셔너리의 모습

    • Key와 Value 여러 쌍이 {}로 둘러쌓인다.
    • Value에 리스트도 넣을 수 있다. (Key에는 불가능)
    • 쌍을 추가하거나 del로 삭제할 수 있다.
    • 관련 함수는 다음과 같다.
      • keys(), values(), items(), clear(), get(key), [key] in [list]

     

    2) 딕셔너리의 특징

    • 리스트, 튜플이 값을 순차적으로 저장하는 것과 달리, Key와 Value의 쌍을 데이터로 가진다.
    • 원하는 'Immutable(변경 불가능한) 자료형'을 Key로 사용할 수 있음
    • 파이썬의 딕셔너리 자료형은 Hash Table을 이용하므로 데이터의 조회 및 수정에 있어 O(1)의 시간에 처리할 수 있다.
      • 문자열 등의 Key를 이용하여 데이터를 관리 및 저장할 때 List보다 훨씬 효율적으로 사용할 수 있다.
    • 키와 값을 별도로 뽑아내기 위한 메서드를 지원한다.
      • keys() : 키 데이터만 뽑아 리스트로 이용한다.
      • values() : 값 데이터만 뽑아 리스트로 이용한다.

    사전 자료형의 예 (다른 언어에서는 Hash Table로 불림)
    사전 자료형 사용 실습

     

     

     

    7. 집합 자료형

    1) 집합 자료형의 특징

    • 중복을 허용하지 않는다.
    • 순서가 없다.
    • 리스트 or 문자열을 이용하여 초기화가 가능하다.
      • 이때, set() 함수를 사용한다.
    • 중괄호 '{}' 안에 각 원소를 콤마를 기준으로 구분하여 삽입하여 초기화할 수 있다.
    • 데이터의 조회 및 수정에 있어 O(1)의 시간에 처리가 가능하다.

     

     

    2) 집합 자료형의 연산 : 합집합, 교집합, 차집합 연산 사용 가능

    • 합집합 : |
    • 교집합 : &
    • 차집합 : -

    합집합, 교집합, 차집합 실습

     

    3) 집합 자료형 관련 메소드

    • add() : 새로운 원소를 추가한다.
    • updata() : 새로운 원소 여러 개를 추가한다.
    • remove() : 특정 값을 갖는 원소를 삭제한다.

    add, update, remove 메소드

     

    <사전(딕셔너리) 자료형 & 집합 자료형의 특징>

    • 리스트나 튜플은 순서가 있어 인덱싱을 통해 자료형의 값을 얻는다.
    • 사전 자료형과 집합 자료형은 순서가 없어 인덱싱으로 값을 얻을 수 없다.
      • 사전의 키(Key) 혹은 집합의 원소(Element)를 이용해 O(1)의 시간복잡도로 조회한다.

     

     

     

    7. 변수

    1) 변수를 만드는 여러가지 방법

    >>> a, b = ('python', 'life')
    >>> (a, b) = 'python', 'life'

    튜플을 통해 a, b에 값을 대입한다. (두 방법이 완전히 똑같음)

     

     

    >>> [a, b] = ['python', 'life']

    위와 같이 리스트로 변수를 만들 수 있다.

     

     

    >>> a = b = 'python'

    위와 같이 여러 개의 변수에 같은 값을 대입할 수 있다.

    728x90
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기