[자료구조 & 알고리즘] Chapter01. 자료구조(List)

황성미·2023년 7월 19일
0
post-thumbnail
post-custom-banner

✍🏻 19일 공부 이야기

자료구조 리스트에 대해 알아보았다 :)


자료구조

  • 자료구조 : 여러 개의 데이터가 묶여있는 자료형을 컨테이너 자료형이라고 하고, 이러한 컨테이너 자료형의 데이터 구조를 자료구조라고 함.
  • 파이썬의 대표적인 컨테이너 자료형 : 리스트, 튜플, 딕셔너리, 셋트

리스트

  • 리스트 : 배열과 같이 여러 개의 데이터를 나열한 자료 구조. []를 이용해서 선언하고 데이터의 구분은 , 로 함.

  • 리스트의 길이(아이템 개수) : len(리스트이름)

  • 리스트의 아이템 조회 :

    1. 인덱스 이용하는 방법. 리스트이름[인덱스] 단, 인덱스는 0부터 시작함.

      list = ['apple', 'banana']
      for i in range(len(list)):
      	print(list[i])
      #n = 0
      #while n < len(list):
      #	print(list[i])
      #	n += 1
      #과 같이 while문으로도 사용 가능
    2. 리스트 자체에 접근하는 방법.

      #1
      list = ['apple', 'banana']
      for item in list:
      	print(item)
      
      #2
      studentsCnts = [[1, 19], [2, 13], [3, 16]]
      #인덱스로 접근하자면..
      #1 : studentsCnts[0][0]
      #19 : studentsCnts[0][1]
      #2 : studentsCnts[1][0]
      #13 : studentsCnts[1][1]
      #과 같이 할 수 있다.
      #
      #더 간편한 방법도 있는데,
      for classNum, studentscnt in studentsCnts: #변수 2개를 선언하여
      	print(f'{classNum}학급의 학생수 : {studentscnt}명')
          #1학급의 학생수 : 19명
          #2학급의 학생수 : 13명
          #3학급의 학생수 : 16명
          #과 같이 손쉽게 여러 아이템에 접근할 수 있다.
      			```
    3. enumerate() 함수를 이용하는 방법.(인덱스와 아이템에 한 번에 접근 가능)

      list = ['apple', 'banana']
      for idx, value in enumerate(list):
      	print(f'{idx} : {value}')
      #0 : apple
      #1 : banana
  • 리스트 아이템 추가 :

    1. 리스트이름.append(추가할내용) 함수를 이용하는 방법 : 리스트의 마지막 인덱스에 아이템을 추가할 수 있음.
    2. 리스트이름.insert(추가할 위치, 추가할 내용)을 이용하는 방법 : 리스트의 특정 위치에 아이템을 추가할 수 있음.
  • 리스트 아이템 삭제 :

    1. 리스트이름.pop(삭제할 아이템 인덱스)을 이용하는 방법 : 리스트의 특정 위치의 아이템이 삭제됨. 인덱스를 생략하면 마지막 위치의 아이템이 삭제됨.

    2. 리스트이름.remove(삭제할 아이템)을 이용하는 방법 : 리스트에서 삭제하고자 하는 아이템 내용을 입력하면 첫 번째로 만나는 해당 아이템이 삭제됨. 즉, 리스트 내에 특정 내용을 모두 삭제하고 싶다면 while문을 이용해야함.

        list = ['apple', 'banana', 'orange', 'banana', 'melon']
      
        while 'banana' in list:
            list.remove('banana')
    3. del 리스트이름[삭제할 아이템 인덱스]를 이용하는 방법 : 해당 인덱스의 아이템이 삭제됨.

  • 리스트 연결 :

    1. 리스트이름.extend(확장할 리스트 이름) 함수를 이용하는 방법 : 기존 리스트에 확장되는 개념.
    2. 리스트이름 1 + 리스트 이름 2 연산자를 이용하는 방법 : 새로운 리스트 3이 탄생하는 개념.
  • 리스트 정렬 :
    1. 리스트이름.sort() 오름차순, 리스트이름.sort(reverse = True) 내림차순
    2. sorted(리스트이름) 오름차순, sorted(리스트이름, reverse = True) 내림차순
    sorted()는 key 매개변수를 통해 어떤 것을 기준으로 정렬할 지 정할 수 있다.
    .sort()와 sorted()는 반환값의 차이가 있다.

  • 리스트 순서 뒤집기 : 리스트이름.reverse()

  • 리스트 슬라이싱 :
    리스트의 인덱스는 왼쪽에서부터는 0,1,2,3,... 순으로 매겨지고, 오른쪽에서부터는 -1,-2,-3,... 순으로 매겨진다.

    1. 리스트이름[n:m] 또는 리스트이름.slice(n,m)을 이용 : n번부터 (m이 양수일 땐)m-1번(단, m이 음수이면 m번) 까지의 아이템 추출
    2. 리스트이름[n:m:r]을 이용하면 슬라이싱할 때 해당 범위에서 r만큼의 단계에 있는 아이템만 추출
    3. 슬라이싱을 이용하여 아이템을 변경할 수 있음. 리스트이름[n:m] = [변경할 아이템들]
  • 리스트 반복 : 리스트이름 = 리스트이름 * 반복할횟수

  • 리스트 인덱스 : 리스트이름.index(찾고자하는 아이템)

  • 리스트 특정 아이템의 개수 : 리스트이름.count(찾고자하는 아이템)

profile
데이터 분석가(가 되고픈) 황성미입니다!
post-custom-banner

2개의 댓글

comment-user-thumbnail
2023년 7월 19일

글 잘 봤습니다, 많은 도움이 되었습니다.

1개의 답글