자료구조란?
- 여러개의 데이터를 효과적으로 다룰 수 있는 것
- 파이썬에서는 기본 타입으로 제공 됨
- 다른 객체들의 컬랙션
자료구조 | 예시 | 순서 | 수정 가능 |
리스트 | [1, 2, 3] | O | O |
튜플 | (1, 2, 3) | O | X |
딕셔너리 | {"숫자" : 1} | X | O |
자료구조는 여러 데이터를 담을 수 있는 바구니와 같다.
파이썬 리스트
- 순서가 있고 수정 가능한 자료구조
파이썬 리스트의 생성
- 대괄호 [ ]를 사용하여 리스트에 넣고 싶은 값을 적어준다.
- 값이 여러 개인 경우 쉼표(,)를 사용해서 각 값을 구분.
ex)
과일 = ["사과", "배", "수박"]
파이썬 리스트 인덱싱
- 리스트는 순서가 있어 정수값을 사용해서 인덱싱 할 수 있다.
인덱싱이란? 인덱스를 통해 문자열에서 문자하나를 가져오는것
파이썬 리스트 슬라이싱
- 리스트는 순서가 있으므로 정수 값을 사용해서 슬라이싱 할 수 있다.
- [시작 인덱스:끝인덱스]
슬라이싱이란? 범위를 지정하여 문자열의 일부를 가져오는 것
파이썬 리스트 수정, 추가, 삽입, 삭제
리스트 수정
- 인덱싱을 통해 새로운 값을 바인딩하면 리스트가 수정된다.
슬라이스 할당
- 리스트를 사용할 때 특정 인덱스 또는 슬라이스에 값 할당 가능
ex)
data = ['a', 'b', 'c', 'd']
data[0] = 'A'
data = ['a', 'b', 'c', 'd']
data[0:2] = ['A', 'B']
슬라이스를 통해 한번에 여러값을 변환 할 수 있다.
파이썬 리스트 추가
- append(데이터) 함수를 통해 리스트의 끝에 데이터를 추가한다.
파이썬 리스트 삽입
- insert(인덱스, 원소)를 통해 리스트의 원하는 위치에 원소를 삽입한다.
파이썬 리스트 삭제
- del 리스트[인덱스]를 통해 특정 인덱스에 있는 원소를 삭제한다.
파이썬 리스트 확장
- extend()를 통해 리스트 끝에 다수의 원소를 추가한다.(+와 동일한 기능)
리스트의 최댓값과 최솟값
- max는 최댓값, min은 최솟값
리스트 정렬
- sorted()를 통해 오름차순으로 정렬된 리스트를 얻을 수 있다.
- sorted(변수,reverse=True)를 통해 내림차순으로 정렬된 리스트를 얻을 수 있다.
- 내림차순 정렬시 콤마(,)에 주의하자!
리스트 연결
- 두개의 리스트를 연결하기(+를 통해서 연결해준다.)
과일1 = ["사과", "배"]
과일2 = ["키위", "망고"]
과일 = 과일1 + 과일2
인덱스 찾기
- 리스트에 있는 항목 중 값이 x와 같은 첫번째 것의 인덱스 리턴
과일 = ["사과", "배", "수박", "참외"]
과일.index("수박")
>> 2
파이썬 튜플
튜플
- () 사용
- 순서가 있고 수정 불가능한 자료구조(리스트는 순서가 있고 수정이 가능)
- 자료구조 내의 데이터를 변경할 필요가 없을 때 튜플을 사용
- 값을 변경할 필요가 없을 때 메모리를 아끼기위해 튜플 사용
- 튜플은 수정이 불가능하다.
튜플 생성
- ( ) 사이에 원소를 적고 쉼표로 구별
ex) a = (1 , 2, 3, 4, 5)
튜플 인덱싱
- 순서가 있으므로 [ ] 를 사용하여 정수값으로 인덱싱
튜플 슬라이싱
- [시작 인덱스: 끝 인덱스]을 사용해서 슬라이스 가능
리스트와 튜플의 형변환
- 리스트를 튜플로 형변환
ex) tuple(데이터)
- 튜플을 리스트로 형변환
ex) list(데이터)
데이터 언패킹
data = ("Naver", 10, 17000, (2020.04.04))
종목이름 = data[0]
수량 = data[1]
현재가 = data[2]
날짜 = data[3]
#언패킹을 통해 아래로 표현가능
data = ("Naver", 10, 17000, (2020.04.04))
종목이름, 수량, 현재가, 날짜 = data
*별 표현식
- 데이터 언패킹을 할 때 데이터가 많은 경우 별 표현식을 사용한다.
volume = [1, 2, 3, 4, 5]
last_vol, *trailing_vol = volume
print(last_vol)
print(trailing_vol)
>> 1
>> 2, 3, 4, 5
파이썬 딕셔너리
- key와 value를 쌍으로 저장하는 자료구조
- key를 통해서 value 값을 인덱싱
- 딕셔너리는 순서는 없고 수정은 가능하다.
딕셔너리 생성
- { }를 사용하여 생성 가능
- {key:value} 쌍을 저장함
- 딕셔너리의 원소는 key:value 쌍으로 구성이된다.
- 원소는 쉼표를 사용해서 구분한다.
딕셔너리 인덱싱
- 딕셔너리는 순서가 없으므로 정수로는 인덱싱 할 수 없다.
- 딕셔너리는 key를 통해 value를 인덱싱한다.
- 딕셔너리는 없는 key를 통해 인덱싱하면 에러가 발생한다.
- get 함수를 사용하면 key가없는 경우 None을 리턴한다.
과일 = {
"사과" : 2000,
"배" : 3000,
"수박" : 5000
}
과일["체리"]
>> Error 코드 발생
과일.get["체리"]
>> None 반환
딕셔너리 수정
- 딕셔너리는 수정이 가능하다.
- 딕셔너리[키] = 새로운 값
과일 = {
"사과" : 2000,
"배" : 3000,
"수박" : 5000
}
과일["배"] = 2500
print(과일["배"])
>> 2500
딕셔너리에 값 추가
- 딕셔너리는 수정이 가능함으로 원소 추가가 가능하다.
- 딕셔너리[키] = 값
딕셔너리 원소 삭제
- del키워드를 사용함
- del 딕셔너리[키] -> key와 value 쌍이 딕셔너리에서 삭제된다.
딕셔너리 key, value 값 얻기
딕셔너리에서 key값만 얻기
- dic.keys() 사용
딕셔너리에서 value값만 얻기
- dic.values() 사용
파이썬 2차원 데이터
이차원 리스트
ex) 아파트 1층(101호, 102호)
아파트 2층(201호, 202호)
아파트 3층(301호, 302호)
파이썬 코드로 표현
아파트 = [
[101, 102],
[201, 202],
[301, 302]
]
이차원 리스트 인덱싱
- 이차원 리스트의 인덱싱의 결과는 일차원 리스트이다.
- 인덱싱 기호를 연속으로 붙여서 사용한다.
- 2차원 리스트의 인덱싱 -> 1차원 리스트 -> 특정원소
아파트 = [
[101, 102],
[201, 202],
[301, 302]
]
일층 = 아파트[0]
일층[0]
>> 101
# 연속으로 표현
print(아파트[0][0])
print(아파트[0][1])
>> 101
>> 102
딕셔너리 중첩
- 딕셔너리 안에 또 다시 딕셔너리를 쓰는 경우
인물정보 = {
"이름" : "홍길동",
"나이" : 25,
"직업" : "아버지를 아버지라 부르지못하는자",
"주소" : {
"도" : "동해번쩍",
"시" : "서해번쩍"
}
}
print(인물정보["이름"])
print(인물정보["주소"]["시"])
>> '홍길동'
>> '서해번쩍'
'[코딩] > 파이썬' 카테고리의 다른 글
파이썬 공부 7) 파이썬 튜플 연습문제 71~80 (2) | 2023.07.11 |
---|---|
파이썬 공부 6) 연습문제 51~70 (0) | 2023.07.08 |
파이썬 공부 4) 연습문제 21~50 (0) | 2023.07.05 |
파이썬 공부 3) 연습문제 1~20 (0) | 2023.07.04 |
파이썬 공부 2) 문자열 인덱싱과 슬라이싱 (0) | 2023.07.04 |
댓글