1) 자료구조란
ㆍ자료구조 : 컨테이너 자료형의 데이터 구조
ㆍ컨테이너 자료형 : 여러개의 데이터가 묶여있는 자료형
ㆍ리스트(List), 튜플(Tuple), 딕셔너리(Dictionary), 세트(Set)
List -> number = [1, 2, 3, 4, 5]
Tuple -> number = (1, 2, 3, 4, 5)
DIc -> number = {'one' : 1, 'two': 2, 'three' : 3, 'four' : 4, 'five':5 }
Set -> number = {1, 2, 3, 4, 5}
ㆍ배열과 같이 여러 개의 데이터를 나열한 자료구조
ㆍ‘[ ]’를 이용해서 선언하고, 데이터 구분은 ‘,’를 이용한다.
ㆍ숫자, 문자(열), 논리형 등 모든 기본 데이터를 같이 저장할 수 있다.
ㆍ리스트에 또 다른 컨테이너 자료형 데이터를 저장할 수도 있다
ㆍ리스트 아이템은 인덱스를 이용해서 조회 가능하다.
ㆍlen()을 이용하여 길이를 구할수 있으며 for문, while문을 같이 사용하여 아이템을 구할수 있다.
인덱스 : 아이템에 자동으로 부여되는 번호표
리스트 길이 : 리스트에 저장된 아이템 개수
① enumerate()
ㆍenumerate() 함수를 이용하면 아이템을 열거할 수 있다
ㆍenumerate()는 문자열에도 적용할 수 있다
for i in range(len(numbers)):
print(i, numbers[i])
for idx, number in enumerate(numbers):
print(idx, number)
② append()
ㆍappend() 인덱스 마지막에 아이템 추가
alpabet.append('z')
③ insert()
ㆍinsert()특정 위치에 아이템 추가
alpabet.insert(1, 'b')
④ pop()
ㆍpop() 마지막 인덱스에 해당하는 아이템 삭제
ㆍpop(n) -> n 인덱스에 해당하는 아이템 삭제
alpabet.pop()
⑤ remove()
ㆍremove() 특정 아이템 삭제
ㆍremove()는 한개의 아이템만 삭제가능, 2개이상의 데이터를 삭제시킬려면 whil문을 사용하자
alpabet.remove('a')
⑥ extend()
ㆍextend() 함수를 이용하면 리스트에 또 다른 리스트를 연결(확장)할 수 있다
ㆍ덧셈 연산자를 이용해서 리스트를 연결할 수도 있다
⑦ sort()
ㆍsort() 함수를 이용하면 아이템을 정렬할 수 있다
오름차순 -> sort()
내림차순 -> sort(reverse=True)
⑧ reverse()
ㆍreverse() 함수를 이용하면 아이템을 순서를 뒤집을 수 있다
⑨ 슬라이싱
ㆍ리스트슬라이싱 : [n:m]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있다
ㆍ문자열 슬라이싱 : [n:m]을 이용하면 문자열도 슬라이싱이 가능하다.
ㆍ슬라이싱을 이용해서 아이템을 변경할 수 있다
ㆍslice() 함수를 이용해서 아이템을 슬라이싱할 수 있다
⑩ 리스트 곱셈 연산
ㆍ리스트를 곱셈 연산하면 아이템이 반복된다
⑪ index()
ㆍindex(item) 함수를 item의 인덱스를 알아낼 수 있다.
⑫ count()
ㆍcount() 함수를 이용하면 특정 아이템의 개수를 알아낼 수 있다
⑬ del 키워드
ㆍdel 키워드를 이용하면 특정 아이템을 삭제할 수 있다
ㆍ리스트(List)와 비슷하지만 아이템 변경이 불가하다
ㆍ‘()’를 이용해서 선언하고, 데이터 구분은 ‘,’를 이용한다.
ㆍ튜플도 리스트와 마찬가지로 아이템에 자동으로 부여되는 번호표(인덱스)가 있다
ㆍ튜플 아이템은 인덱스를 이용해서 조회 가능하다
① in/ not in 키워드
ㆍin, not in 키워드를 이용하면 아이템의 존재 유/무를 알 수 있다
ㆍin, not in 키워드는 문자열에서도 사용 가능하다
'a' in alpabet -> 알파벳 리스트 또는 튜플 안에 'a'가 있으면 True
② len()
ㆍlen()과 반복문을 이용하면 튜플의 아이템 조회가 가능하다.
③ 튜플 결합
ㆍ덧셈연산자로 두 개의 튜플을 결합할 수 있다
ㆍ리스트에서 사용할 수 있는 extend()함수를 튜플에서는 사용할 수 없다
④ 슬라이싱
ㆍ리스트와 마찬가지로 [n:m]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있다
ㆍ슬라이싱할 때 단계를 설정할 수 있다
ㆍ튜플은 슬라이싱을 이용해서 아이템을 변경할 수 없다.
⑤ slice()
ㆍslice()함수를 이용해서 아이템을 슬라이싱할 수 있다
⑥리스트와 튜플은 자료형 변환이 가능하다
number = tuple(number)
number = list(number)
⑦ 튜플의 정렬
ㆍ튜플은 수정이 불가하기 때문에 리스트로 변환 후 정렬하자
list() -> sort() -> tuple()
ㆍsorted() 함수를 이용하면 튜플도 정렬할 수 있다
sorted()는 리스트 자료형을 반환한다.
ㆍ튜플은 리스트와 달리 아이템 추가, 변경, 삭제가 불가하다.
ㆍ튜플은 선언 시 괄호 생략이 가능하다.
ㆍ키(key)와 값(value)를 이용해서 자료를 관리한다
ㆍ‘{ }’를 이용해서 선언하고, ’키:값’의 형태로 아이템을 정의한다.
ㆍ딕셔너리는 키(key)를 이용해서 값(value)을 조회한다.
ㆍ존재하지 않는 키를 이용한 조회 시 에러(error) 발생한다.
① get()
ㆍget(key)를 이용해서 값(value)을 조회 할 수 있다
ㆍget()은 key가 없어도 에러가 발생하지 않는다.
② 딕셔너리 추가/수정
ㆍ‘딕셔너리이름[키(key)] = 값(value)’ 형태로 아이템을 추가한다.
ㆍ추가 하려는 키가 이미 있다면 기존 값이 변경된다
③ keys()와 values()
ㆍ전체 키(key)와 값(value)를 조회할 수 있다.
numKey = numbers.keys()
numVelue = numbers.velues()
④ del 키워드
ㆍdel과 key를 이용한 item 삭제
⑤ pop()
ㆍpop()와 key를 이용한 item 삭제
⑥ in, not in 키워드
ㆍ키(key) 존재 유/무 판단 한다.
⑦ len()
ㆍ딕셔너리 길이(아이템 개수) 를 알 수 있다.
⑧ clear()
ㆍ모든 아이템을 삭제 한다.
numbers.clear()