리스트함수 / 리스트 복사 / 리스트내포 / 리스트와 큐, 스택


리스트


  • 대괄호로 정의

  • 리스트 안의 리스트 > 다차원 배열로 사용 가능

      l = [[1, 2, 3], [4, 5], [6, 7]]
      print(l[0])
      print(l[0][1])
    
      ### 출력
      ### [1, 2, 3]
      ### 2
    



리스트 함수


  • insert(인덱스, 값) : 해당 인덱스에 값 추가

      l = [0, 1, 2, 3, 4, 5]
      l.insert(0, 9)
      l.insert(6, 'hello')
      print(l)
    
      ### 출력
      ### [9, 0, 1, 2, 3, 4, 'hello', 5]
    
  • pop(인덱스) : 해당 인덱스 값 삭제

    • pop() : 기본값 > 마지막 값 삭제
      l = [0, 1, 2, 3, 4, 5]
      l.pop()
      l.pop(0)
      print(l)
    
      ### 출력
      ### [1, 2, 3, 4]
    
  • reverse() : 값 거꾸로 정렬

      l = [1, 2, 3, 4]
      l.reverse()
      print(l)
    
      ### 출력
      ### [4, 3, 2, 1]
    
  • count(값) : 해당 값의 개수

      l = [0, 1, 1, 1, 2, 2, 3]
      print(l.count(1))
    
      ### 출력 > 3
    
  • append() : 해당 값을 요소로 추가

  • extend() : 해당 리스트를 뒤에 붙임 (확장)

  • sort() : 오름차순으로 값 정렬

    • sort는 원래 자체를 섞는 것

    • sorted는 변수를 새로 생성해 다른 위치 메모리에 저장, 원래 변수는 그대로!

  • index() : 리스트에 해당 값이 있다면 해당 값의 인덱스 반환

  • copy() : 리스트 복사

  • del 리스트[위치] : 삭제

  • remove() : 해당 요소 삭제

  • join() : 특정 구분자를 추가해 문자열로 변환

      list = ['a', 'b', 'c']
      print('/'.join(list))
    
      ### 출력
      ### a/b/c
    



리스트 복사


  • 얕은 복사 (shallow copy)

    • 한 차원밖에 복사 못 함

    • b에 a 복사 시 같은 메모리 주소 > b 값 변경 시 a의 값도 변경됨

        a = [1, 2, 3, 4]
        b = a
        print(b)
        b[3] = 1
        print(a)
        print(b)
      
        ### 출력결과
        ### [1, 2, 3, 4]
        ### [1, 2, 3, 1]
        ### [1, 2, 3, 1]
      
        a = [[1, 2], [3, 4]]
        b = a.copy()
        print(b)
        b[1].append(5)
        print(a)
        print(b)
      
        ### 출력결과
        ### [[1, 2], [3, 4]]
        ### [[1, 2], [3, 4, 5]]
        ### [[1, 2], [3, 4, 5]]
      
  • 깊은 복사 (deep copy)

    • 모든 차원에 대해 복사

    • copy.deepcopy()메소드 사용

        a = [[1, 2], [3, 4]]
        b = copy.deepcopy(a)
        print(b)
        b[1].append(5)
        print(a)
        print(b)
      
        ### 출력결과
        ### [[1, 2], [3, 4]]
        ### [[1, 2], [3, 4]]
        ### [[1, 2], [3, 4, 5]]
      



리스트 내포 (List Comprehension)


  • for문과 if문을 한 라인에 작성해 코드를 간결하고 쉽게 만들며, 실행속도를 높여줌

  • 리스트명 = [식 for 변수 in 반복가능한대상]

      l = []
      for i in range(5):
          l.append(i)
      print(l)
    
      ### 출력
      ### [0, 1, 2, 3, 4]
    

    => 리스트내포 =>

      print([i for i in range(5)])
    
      ### 출력
      ### [0, 1, 2, 3, 4]
    



리스트와 큐(Queue) / 스택(Stack)


  • 큐(Queue) : 먼저 넣은 데이터가 먼저 나오는 FIFO(First In First Out) 구조

    • 리스트에 데이터 추가 : 뒤에서 데이터 추가 > append 함수 사용

    • 리스트에서 데이터 빼기 : 앞에서부터 데이터 빼기 > pop 함수 사용

        l = [1, 2, 3, 4]
        l.append(5)
        l.pop(0)
        print(l)
      
        ### 출력
        ### [2, 3, 4, 5]
      
  • 스택(Stack) : 나중에 집어 넣은 데이터가 먼저 나오는 LIFO(Last In First Out)구조

    • 리스트에 데이터 추가 : 뒤에서 데이터 추가 > append 함수 사용

    • 리스트에서 데이터 빼기 : 뒤에서부터 데이터 빼기 > pop함수 사용

        l = [1, 2, 3, 4]
        l.append(5)
        print(l)
        l.pop()
        print(l)
      
        ### 출력
        ### [1, 2, 3, 4, 5]
        ### [1, 2, 3, 4]
      

Categories:

python