컴퓨터에서의 자료 구조 => 컴퓨터에서 처리할 자료를 효율적으로 관리하고 구조화시키는 방법/학문
자료구조는 각각의 컨테이너 자료형에 따라서 차이가 있으며, 파이썬의 대표적인 컨테이너 자료형으로는 리스트(List), 튜플(Tuple), 딕셔너리(Dic), 셋(Set) 이 있다.
List => sutdents = ['홍길동', '박찬호']
Tuple => jobs =('의사', '속기사')
Dic => scores = {'kor':88, 'eng':91}
Set = > allSales = {100, 150}
리스트(List) : 배열과 같이 여러 개의 데이터를 나열한 자료구조
[] 를 이용해서 선언, 데이터 구분은 ' , ' 를 이용한다.
숫자, 문자(열), 논리형 등 모든 기본 데이터를 같이 저장할 수 있다.
리스트에 또 다른 컨테이너 자료형 데이터를 저장할 수도 있다.
str = [3.14, '십', 20, 'one']
lists = [1, 2,3, [1, 2, 3]]
studentCnts = [[1,19], [2, 20], [3, 22], [4, 18]]
for classNo, cnt in studentCnts:
print("{}학급 학생수 : {}".format(classNo, cnt))
output : 1학급 학생수 : 19
2학급 학생수 : 20
sports = ['농구', '수구', '축구', '마라톤', '테니스']
for idx, value in enumerate(sports):
print('{} : {}.format(idx, value)')
str = 'Hello python'
for idx, value in enumerate(str):
print('{} : {}.formate(idx, value)')
message = input('메시지 입력 : ')
cnt = 0
for idx, value in enumerate(message):
if value == ' ':
cnt += 1
print("공백 개수 : {}".formate(cnt))
.append(item) : 마지막 인덱스에 아이템을 추가할 수 있다.
.insert(index, item) : 특정위치(인덱스)에 아이템을 추가할 수 있다.
.pop(index) : 해당 인덱스에 해당하는 아이템을 삭제해주고 반환해줌, 안넣으면 맨끝 삭제
.remove(item) : 특정 아이템을 삭제할 수 있다.
remove는 한 개의 아이템만 삭제 가능하다, 삭제하려는 데이터가 2개 이상이라면 while문을 이용해야한다.
.extend() : 리스트에 또 다른 리스트를 연결(확장)이 가능하다. => 기존리스트에서 확장
덧셈연산자를 이용해서 리스트를 연결할 수도 있음. => 새로운 리스트가 생성됨
.sort(reverse=option) : 아이템을 정렬할 수 있다. reverse=True 선택시 내림차순 정렬
.reverse() : 아이템 순서를 뒤집어 준다.
리스트 슬라이싱
List[n : m : k]을 이용하면 리스트에서 원하는 아이템만 뽑아낼 수 있다. (n to m-1, 간격은 k)
음수사용시 뒤에서부터 계산
슬라이싱을 이용해서 아이템을 변경할 수 있다.
students = ['a', 'b', 'c']
students[1:2] = ['p', 'k', 'l']
output : a, p ,k, l, b, c
students[slice(2)]
리스트의 곱셈 연산 : 리스트를 곱셈 연산하면 아이템이 반복된다.
index(item,start,end) : item의 인덱스를 찾아줌, 단 여러개가 존재할시 앞에부터 리턴!. start랑 end 지정해주면 그 사이에 ㅣ있는걸 찾아주기도 함.
count() : 특정 아이템의 개수를 알아낼 수 있음.
del 키워드를 이용하면 특정 아이템을 삭제할 수 있다.
students = ['홍길동', '강호동', '박찬호', '이경규']
del students[1]
del students[1:3]
strs = (3.14, 'ten', 20)
datas = (10, 20, 30, (40, 50, 60))
아이템의 존재 유/무 판단하기
studentsTuple = ('홍길동', '박찬호', '박승철', '김지은')
searchName = input('학생이름 입력')
if searchName in studentsTuple:
print("까궁")
else:
print("힝")
딕셔너리(Dictionary) : 키(key)와 값(value)를 이용해서 자료를 관리한다.
students = {'s1':'홍길동', 's2':'박찬호', 's3':'이용규','s4':'박승철'}
students['s1']
students.get('s6')
output : None
myInfo = {}
myInfo['이름'] = '박경진'
keys()와 values() : 전체 키(key)와 값(value)를 조회할 수 있다.
items() : key와 value가 튜플형태로 저장하여 반환
pop()과 key를 이용한 item 삭제
del과 key를 이용한 item 삭제
memInfo = {'이름':'홍길동', '메일':'gildong@gmail.com'}
memInfo.pop('이름')
del memInfo['메일']