자료구조 & 알고리즘 with Python (1)

Myeongsu Moon·2024년 9월 23일
0

제로베이스

목록 보기
5/95

Part3 자료구조 & 알고리즘 with Python

Chapter1 자료구조

01_자료구조란?
- 자료구조: 컨테이너 자료형의 데이터 구조
- 컨테이너 자료형: 여러개의 데이터가 묶여있는 자료형
- 자료구조는 각각의 컨테이너 자료형에 따라서 차이가 있으며, 파이썬의 대표적인 컨테이너 자료형으로는 리스트(List), 튜플(Tuple), 딕셔너리(Dic), 셋트(Set)가 있음

02_리스트(List)
- 배열과 같이 여러개의 데이터를 나열한 자료구조
- 리스트선언: '[]'을 이용해서 선언하고, 데이터 구분은 ','을 이용
-> 숫자, 문자(열), 논리형 등 모든 기본 데이터를 같이 저장할 수 있음
- 리스트에 또 다른 컨테이너 자료형 데이터를 저장할 수도 있음

strs = [3.14, '십', 20, 'one']
datas = [10, 20, 30, [40, 50, 60]]

03_리스트 아이템 조회
- 인덱스: 아이템에 자동으로 부여되는 번호표 (자동으로 0에서부터 부여됨)
- 리스트 아이템은 인덱스를 이용해서 조회 가능

04_리스트 길이
- 리스트에 저장된 아이템 개수
- len()과 반복문을 이용하면 리스트의 아이템 조회가 가능

05~06_리스트와 for문
- for문을 이용하면 리스트의 아이템을 자동으로 참조 가능
-> for문을 통해 리스트 내부에 또 다른 리스트의 아이템을 조회할 수도 있음
- for문과 if문을 이용하면 특정 조건에 맞는 아이템 조회 가능

07~08_리스트와 while문
- while문을 이용하면 다양한 방법으로 아이템 조회 가능
- while문과 if문을 이용하면 특정 조건에 맞는 아이템 조회 가능

09_enumerate()함수
- enumerate()함수를 이용하면 아이템 열거 가능
- enumerate()는 문자열에도 적용 가능

for idx, value in enumerate(sports):
	print('{}:{}'.formate(idx, value))

10_리스트에 아이템 추가
- append()함수를 이용하면 마지막 인덱스에 아이템 추가 가능

11_리스트의 특정 위치에 아이템 추가
- insert()함수를 이용하면 특정 위치(인덱스)에 아이템을 추가할 수 있음
- 끼어든 이후의 아이템들은 하나씩 밀림

12_리스트의 아이템 삭제
- pop()함수를 이용햐면 마지막 인덱스에 해당하는 아이템을 삭제할 수 있음
- pop(n)함수로 n 인덱스에 해당하는 아이템을 삭제할 수 있음

13_리스트의 특정 아이템 삭제
- remove() 함수를 이용하면 특정 아이템을 삭제할 수 있음
- remove()는 한개의 아이템만 삭제 가능, 삭제라혀는 데이터가 2개 이상이라면 while문 사용

14_리스트 연결
- extend() 함수를 이용하면 리스트에 또 다른 리스트를 연결(확장) 할 수 있음
-> A, B 리스트를 더하면 A가 확장되는 경우
- 덧셈 연산자를 이용해서 리스트를 연결할 수 있음
-> A, B 리스트를 더하면 C 리스트가 생기는 경우

15_리스트 아이템 정렬
- sort()함수를 이용하면 오름차순으로 아이템이 정렬
- sort(reverse = True)를 적용하면 내림차순으로 아이템 정렬

16_리스트 아이템 순서 뒤집기
- reverse()함수를 이용하면 아이템 순서를 뒤집을 수 있음

17_리스트 슬라이싱
- [n:m]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있음

18~19_리스트 나머지 기능들
- 리스트를 곱셈 연산하면 아이템이 반복 됨
- index(item)함수로 item의 인덱스를 알아낼 수 있음
- count() 함수를 이용하면 특정 아이템의 개수를 알아낼 수 있음
- del 키워드를 이용하면 특정 아이템을 삭제 할 수 있음

20_튜플(Tuple)
- 리스트와 비슷하지만 아이템 변경이 불가
-> 소괄호를 이용해서 아이템 선언
-> 데이터 구분은 ',' 이용

numbers = (10, 20, 30, 40, 50)

21_튜플 아이템 조회
- 튜플도 리스트처럼 인덱스가 부여 됨
- 튜플 아이템은 인덱스를 이용해서 조회 가능

22_in과 not in 키워드
- in은 존재하는 것 / not in은 존재하지 않는 것 확인

23_튜플 길이
- 튜플에 저장된 아이템 개수

24_튜플 결합
- '+'를 통해 두개의 튜플 결합 가능: 새로운 튜플이 만들어짐
- extend() 함수는 튜플에서 사용불가
- ','를 이용하면 어떤 아이템을 튜플로 변경 가능

25_튜플 슬라이싱
- 리스트와 마찬가지로 [n:m]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있음
- 슬라이싱 할 때 단계 설정 가능
- 튜플은 슬라이싱을 이용해서 아이템 변경 불가
- slice()함수를 이용해서 아이템 슬레이싱 가능

print('students:{}'.format(students[slice(2,4)])

26_리스트와 튜플
- 튜플은 리스트와 달리 아이템 추가, 변경, 삭제 불가
- 튜플은 선언시 괄호 생략이 가능
- 리스트와 튜플은 자료형 변환이 가능

27_튜플 아이템 정렬
- 튜플은 수정이 불가능하기 때문에 리스트로 변환 후 정렬
- sorted() 함수를 이요하면 튜플도 정렬 가능
-> sorted()는 리스트 자료형 반환

28~29_튜플과 for문
- for문을 이용하면 튜플의 아이템을 자동으로 참조할 수 있음(조회)
-> for문을 통해 튜플 내부에 또 다른 튜플의 아이템 조회 가능
- for문으로 튜플에 있는 내용 조회 후 if문을 사용하면 조건에 맞는 것 확인 가능

30_튜플과 while문
- while문을 이요하면 다양한 방법으로 아이템 조회가능

while n <= len(cars): ~
while flag:   ~
while True:   ~

32_딕셔너리
- 딕셔너리는 키(key)를 이용해서 값(value)을 조회함
-> key는 중복되지 않게 선언해야 함
- '{}'를 이용해서 선언하고, '키:값'의 형태로 아이템을 정의
-> key, value에는 숫자, 문자(열), 논리형, 컨테이너 자료형까지도 가능함
-> key에는 변경이 불가능한 데이터(immutable)값만 가능

33_딕셔너리 조회
- 딕셔너리는 키(key)를 이용해서 값(value)을 조회함
- 존재하지 않는 키를 이용한 조회 시 에러 발생
- get(key)를 이용해서 값을 조회할 수 있음
-> get()은 key가 없어도 에러가 발생하지 않음

34_딕셔너리 추가
- '딕셔너리이름 [키(key)] = 값(value)' 형태로 아이템을 추가
- 추가하려는 키가 이미 있다면 기존 갑이 변경 됨

ex)
myInfo['전공'] = 'Computer'

35_딕셔너리 수정

  • '딕셔너리이름 [키(key)] = 값(value)' 형태로 아이템을 수정

36_keys()와 values()
- keys(): 전체 키 조회
- values(): 전체 값 조회
- items(): 모든 아이템 값을 가져옴
- 리스트 함수를 써서 리스트로 변환 가능
-> 딕셔너리는 key가 가장 중요
- for문을 이용한 조회 (가장 많이 사용)

ex)
for key in memInfo.keys():
	print(f'{key}:{memInfo[key]}')

37_딕셔너리 삭제
- del과 key를 이용하면 item 삭제 가능
- pop(), key를 이용해서 item 삭제 가능: 삭제후 value 값 얻어 낼 수 있음

ex) del memInfo['메일']

38_딕셔너리 유용한 기능
- in/not in: 키(key) 존재 유무 판단
- len(): 딕셔너리 길이(아이템 개수)를 알 수 있음
- clear(): 모든 아이템을 삭제함

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

0개의 댓글