본문 바로가기
[코딩]/파이썬

파이썬 공부 5) 파이썬 자료구조(리스트, 튜플, 딕셔너리), 이차원 데이터

by 문이♣ 2023. 7. 7.
반응형

자료구조란?

- 여러개의 데이터를 효과적으로 다룰 수 있는 것

- 파이썬에서는 기본 타입으로 제공 됨

- 다른 객체들의 컬랙션

자료구조 예시 순서 수정 가능
리스트 [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(인물정보["주소"]["시"])
>> '홍길동'
>> '서해번쩍'

 

반응형

댓글