list

  • python에서 list는 변경 가능한 객체(mutable)
  • 자료형에 상관없이 만들 수 있다.
  1. Basic

    • C 언어에서의 정의

      1
      2
      // 같은 타입을 가진 변수들의 모임
      int arr[5] = {1, 2, 3, 4, 5}
    • python에서의 정의

      1
      2
      3
      4
      # 다양한 변수들의 모임
      # 타입이 다른 변수들을 묶을 수 있다.
      # 리스트는 대괄호로 선언한다.
      li = [1, 0.5, 'abc']
    • 인덱싱이 가능하다.

    • python에서는 음수 인덱싱이 가능하며, 뒤쪽부터 역순으로 접근한다.
    • 연산도 가능하다.

      1
      2
      3
      4
      5
      6
      7
      8
      9
      li = [10, 20, 30, 'a', 'b', 'c']
      li[2]
      >> 30

      li[-1]
      >> 'c'

      li*2
      >> [10, 20, 30, 'a', 'b', 'c', 10, 20, 30, 'a', 'b', 'c']
    • 슬라이싱도 가능하다([start(포함):end(미포함)]).

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      li = [10, 20, 30, 'a', 'b', 'c']
      li[1:3]
      >> [20, 30]

      li[2:4] = [1]
      li
      >> [10, 20, 1, 'b', 'c']

      # 리스트 안에 리스트 넣기
      li[3] = [2]
      li
      >> [10, 20, 1, [2], 'c']

      li[2:3] = [3]
      li
      >> [10, 20, 3, [2], 'c']

      li[2] = [23]
      li
      >> [10, 20, [23], [2], 'c']

      li[2] = '23'
      li
      >> [10, 20, '23', [2], 'c']

      li[2] = 23
      li
      >> [10, 20, 23, [2], 'c']

      # 범위 안에 나누어서 넣기
      li[1:3] = '30'
      li
      >> [10, '3', '0', [2], 'c']
  2. 관련 함수들

    1
    dir(list)
    • 자료 구조는 크게 3가지로 나눈다.
      1) insert(삽입)
      2) search(검색)
      3) delete(삭제)
      1
      2
      # list 예시
      li = [10, 20, 1, 'b','c']

    1) insert 계열

    • append() : 리스트 끝에 요소 값 추가

      1
      2
      3
      li.append(100)
      li
      >> [10, 20, 1, 'b', 'c', 100]
    • insert() : 원하는 자리를 지정하여 요소 값 추가

      1
      2
      3
      li.insert(2,'a')
      li
      >> [10, 20, 'a', 1, 'b', 'c', 100]
    • extend() : 인자를 리스트로 받아 기존 리스트를 확장

      1
      2
      3
      li.extend([1, 2, 3])
      li
      >> [10, 20, 'a', 1, 'b', 'c', 100, 1, 2, 3]

    2) search 계열

    • 인덱싱

      1
      2
      li[2]
      >> 'a'
    • index() : 원하는 요소 값의 위치를 반환

      1
      2
      li.index('b')
      >> 4

    3) delete 계열

    • remove() : 원하는 요소 값 제거

      • 값이 중복될 경우, 첫번째 값만 제거
      • 반복해서 제거 가능
        1
        2
        3
        li.remove(1)
        li
        >> [10, 20, 'a', 'b', 'c', 100, 1, 2, 3]
    • pop() : 요소 값 가져오기

      • 인자를 넣지 않으면 요소 끝 자리에 있는 값을 가져옴
      • 리스트에서는 삭제
        1
        2
        3
        4
        5
        6
        7
        8
        li.pop()
        >> 3

        li.pop(2)
        >> 'a'

        li
        >> [10, 20, 'b', 'c', 100, 1, 2]
    • 정렬 함수

      • sort() : 오름차순 정렬
      • sort(reverse = True) : 내림차순 정렬
      • sorted(list) : 오름차순 정렬(기존 리스트 차순을 변경하고 싶지 않을 때 사용)
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        22
        23
        24
        25
        26
        27
        import random
        li = []
        for i in range(5):
        li.append(random.randint(1,10)) # 1부터 10 사이 임의의 정수
        li
        >> [4, 5, 8, 5, 9]

        li.sort()
        li
        >> [4, 5, 5, 8, 9]

        li.sort(reverse = True)
        li
        >> [9, 8, 5, 5, 4]

        li = []
        for i in range(5):
        li.append(random.randint(1,10))
        li
        >> [5, 8, 7, 10, 1]

        li_sorted = sorted(li)
        li_sorted
        >> [1, 5, 7, 8, 10] # 변경된 리스트

        li
        >> [5, 8, 7, 10, 1] # 변경되지 않은 기존 리스트
Share