004. 데이터 취업 스쿨 스터디 노트_4주차_자료구조

Julia-jh·2024년 5월 7일
0

4주차

수강한 분량

자료구조를 수강했다. 자료구조에서는 리스트, 튜플, 딕셔너리를 배웠고, 각 자료구조마다 존재하는 함수도 있지만 슬라이싱, 정렬 등은 비슷하게 작용했다. 다만 딕셔너리는 인덱스가 아니라 키로 값들을 구분하는 것을 유의해야 했다.

각 강의별 학습한 핵심 내용 정리

  • 자료구조
    - 컨테이너 자료형의 데이터 구조
    - 컨테이너 자료형
    - 여러 개의 데이터가 묶여있는 자료형
    - 리스트, 튜플, 딕셔너리, 셋트 존재
    - 변수명을 복수형으로 적는 경향있다

리스트

  • 리스트
    - 배열과 같이 여러 개의 데이터를 나열한 자료구조

  • []로 선언하고, 데이터 구분은 ,를 이용한다

  • 숫자, 문자(열), 논리형 등 모든 기본 데이터를 같이 저장할 수 있다

  • 리스트에 또 다른 컨테이너 자료형 데이터를 저장할 수 있다

  • 인덱스
    - 아이템에 자동으로 부여되는 번호표

  • 리스트 아이템은 인덱스를 이용해 조회가 가능하다
    - 변수명[인덱스번호]를 이용해 아이템에 접근 가능하다

  • 리스트 길이
    - 리스트 저장된 아이템 갯수
    - len(리스트변수)

  • 레퍼런스 변수
    - 메모리 주소를 가지고 멀리 있는 리스트 값을 참조하는 것
    - 리스트의 레퍼런스 변수: 리스트를 선언할 때 사용한 변수명

  • for문의 range(len(리스트변수))를 활용하면 리스트의 아이템 조회가 쉽다
    - for item in range(lists)

  • for문에 리스트변수를 활용하면 리스트 아이템 조회가 쉽다
    - for item in lists

  • len(변수)
    - 변수가 문자열일 경우, 문자열 길이도 알 수 있다

  • for문을 활용한 리스트 아이템 참조하기
    - for 지역변수 in range(len(리스트변수명)):
    - 리스트변수 내부 아이템의 인덱스를 참조하는 방법
    - for 지역변수 in 리스트변수명:
    - 리스트변수 내부 아이템을 직접적으로 참조하는 방법
    - 리스트 내부에 리스트가 또 있는 경우
    - for 지역변수1, 지역변수2 in 리스트변수명:
    - 지역변수1은 리스트내부의 첫 번째 요소를, 지역변수2는 리스트내부의 두 번째 요소를 가리킨다
    - 조건문을 함께 활용할 경우

for 지역변수 in 리스트변수명:
	if 조건문: continue  # 조건에 해당하면 아래를 수행하지 않고 다음 단계의 for문을 수행한다
	수행문 # 조건에 해당하지 않을 경우 수행하는 문구
  • while문을 활용한 리스트 아이템 참조하기
    - 조건을 횟수로 제한하고, 반복문 말미에 횟수 변수에 1을 더하는 방법
    - boolean값을 가진 flag변수를 활용하여 반복문 말미에 횟수 변수에 1을 더하고, 횟수 변수가 어느 값인 경우 flag에 false를 주는 방법
    - True 조건문을 활용하여 반복문 말미에 횟수 변수에 1을 더하고, 횟수 변수가 어느 값인 경우 break를 주는 방법

  • enumerate()함수
    - 인덱스와 아이템을 한 번에 조회하는 함수
    - for idx, value in enumerate(리스트변수명):
    - 인덱스변수, 값변수 순서로 배정된다
    - 리스트변수 뿐 아니라, 문자열로도 활용이 된다

  • 리스트에 아이템 추가하기
    - append() 함수
    - 리스트변수명.append(새로운값)
    - 마지막 인덱스에 아이템을 추가한다.
    - insert() 함수
    - 리스트변수명.insert(특정인덱스, 새로운값)
    - 특정 인덱스에 아이템을 추가한다.
  • 리스트 아이템 삭제하기
    - pop() 함수
    - 리스트변수명.pop()
    - 마지막 인덱스에 해당하는 아이템을 삭제한다.
    - 리스트변수명.pop(특정인덱스)
    - 특정 인덱스에 해당하는 아이템을 삭제한다.
    - 삭제하는 데이터를 반환한다.
    - remove() 함수
    - 리스트변수명.remove(아이템)
    - 특정 아이템을 삭제한다.
    - 1개의 아이템만 삭제할 수 있으므로, 여러 개를 삭제하고 싶다면 while문을 활용하는 것이 좋다.
while 아이템 in 리스트변수명:
	리스트변수명.remove(아이템)
  • 리스트 연결하기
    - extend() 함수
    - 리스트변수명1.extend(리스트변수명2)
    - 리스트변수명1에 리스트변수명2를 추가한다.
    - 덧셈 연산자 활용
    - 리스트변수명1 + 리스트변수명2
    - 리스트변수명1과 리스트변수명2가 이어진 새로운 변수가 만들어진다.

  • 리스트 정렬하기
    - sort() 함수
    - 오름차순으로 정렬한다
    - sort(reverse = True)
    - 내림차순으로 정렬
    - reverse() 함수
    - 주어진 순서를 뒤집는다
    - 변수명.reverse()

  • 리스트 슬라이싱
    - [n:m:s]
    - n에서 부터 m-1까지 s칸씩
    - 숫자가 없을 경우 n자리는 맨 처음부터, m자리는 맨 끝까지, s는 1이 디폴트
    - 숫자가 음수일 경우 뒤쪽에서부터 계산, 이때 -1이 맨 끝자리
    - 문자열 슬라이싱
    - 리스트 슬라이싱과 동일
    - 슬라이싱을 이용해 아이템 변경도 가능
    - slice() 함수
    - 변수명[slice(n, m)]

  • 리스트 곱셈 연산
    - 아이템이 반복된다

  • 리스트 아이템 위치 찾기
    - index() 함수
    - 변수명.index(값, n, m)
    - 만약 변수 내부에 값이 복수개 존재할 경우 맨 앞의 하나만 반환한다
    - n에서 m까지의 범위 내에서 주어진 값의 인덱스를 찾는다. 생략시 처음부터 끝까지가 디폴트

  • 리스트에서 특정 아이템 갯수 알아내기
    - count() 함수
    - 변수명.count(값)

  • 특정 아이템 삭제
    - del 변수명[n]
    - n자리에 인덱스, 슬라이싱 적용 가능

  • random 패키지에 sample 함수 활용
    - random.sample(범위, 갯수)
    - 리스트로 반환

튜플

  • 튜플
    - 리스트와 비슷하지만 아이템 변경(수정, 삭제)이 불가능
    - () 이용해 선언하고, ,를 이용해 구분한다
    - 아이템이 한 개일 경우 아이템 뒤에 콤마를 추가하면 튜플로 선언이 가능
    - (아이템, )
    - 소괄호 없이 아이템을 , 이용해 나열해도 튜플로 선언됨
    - 숫자, 문자(열), 논리형 등을 같이 저장할 수 있음
    - 튜플 내 또 다른 컨테이너 자료형 데이터 저장이 가능하다
    - 튜플과 리스트는 서로 변환이 가능하다
    - tuple() 함수
    - tuple(변수명)
    - list() 함수
    - list(변수명)

  • 튜플 아이템 조회
    - 인덱스를 활용한 슬라이싱을 이용

  • 특정 아이템 존재 유/무
    - in, not in 키워드 활용
    - 값 in 변수명
    - 변수내에 값과 동일한 아이템이 있으면 True
    - 값 not in 변수명
    - 변수내에 값과 동일한 아이템이 없으면 True
    - 문자열에도 활용 가능

  • 튜플 길이
    - len(튜플변수명)

  • 튜플 결합
    - + 연산자를 이용해 두 튜플을 결합해 새로운 튜플을 선언할 수 있다
    - 리스트의 extend() 함수 사용 불가능

  • 튜플 슬라이싱
    - 리스트와 동일한 방식으로 슬라이싱 가능
    - 슬라이싱 이용한 데이터 변경은 불가능
    - 다만 리스트를 슬라이싱 이용해 튜플의 아이템으로 변경할 수 있고, 결과는 여전히 리스트이다.
    - slice() 함수 활용 가능

  • 튜플 아이템 정렬
    - 튜플을 리스트로 변환 후, sort() 함수를 활용해 정렬, tuple() 함수를 이용해 재변환
    - sorted() 함수
    - sorted(변수명)
    - 원본 자료는 그대로, 새롭게 리스트 자료형을 반환
    - key, reverse 옵션은 sort() 함수와 동일

  • 튜플과 for문
    - 리스트와 동일한 방법 활용

  • 튜플과 while문
    - 리스트와 동일한 방법 활용

딕셔너리

  • 딕셔너리
    - key와 value를 이용해 자료를 관리
    - key
    - 중복X
    - 리스트, 튜플의 index와 비슷한 역할, 내가 부여하는 값
    - immutable값만 올 수 있다.(변경 불가능한)
    - ex) tuple
    - {}을 이용해 선언하고, : 이용해 key와 value를 연결하고, ,를 이용해 아이템 나열
    - {key : value, ...}
    - 숫자, 문자(열), 논리형, 컨테이너 자료형도 올 수 있다

  • 딕셔너리 조회
    - 변수명[key]를 활용해 value를 조회한다
    - 없는 key를 넣으면 Error 발생
    - 변수명.get(key)를 활용해 value를 조회한다
    - 없는 key를 넣으면 None을 반환한다
    - 전체값 조회
    - keys() 함수
    - 변수명.keys()
    - 타입: dict_keys
    - 리스트 형태로 반환
    - values() 함수
    - 변수명.values()
    - 타입: dict_values
    - 리스트 형태로 반환
    - items() 함수
    - 변수명.items()
    - 타입: dict_items
    - tuple 형태로 저장되어 있음

  • 딕셔너리 추가
    - 변수명[key] = value형태로 아이템을 추가
    - 이미 존재하는 key일 경우 value값이 수정됨

  • 딕셔너리 수정
    - 변수명[존재하는 key] = 새로운 값

  • 딕셔너리 삭제
    - del 변수명[key]
    - 변수명.pop(key)
    - 삭제된 값이 반환된다

  • 딕셔너리
    - in, not in 키워드
    - key 존재 유무를 판단
    - len() 함수
    - clear()
    - 모든 아이템을 삭제
    - 아이템 갯수가 0인 dict만 남는다

연습문제

+ 추후에 추가

느낀점

이 글은 제로베이스 데이터 취업 스쿨의 강의 자료 일부를 발췌하여 작성되었습니다.

profile
데이터 직무로 먹고 살고 싶은 사람

0개의 댓글