본문 바로가기
자기개발

Python (파이썬) 독학하기 _ #3. 자료구조(Data Structure)

by benjamin-L 2022. 8. 31.
728x90
반응형

파이썬에서는 여러가지 자료구조를 적용해서 사용되고 있습니다. 예를들면 리스트, 튜플, 딕셔너리, Set(집합) 등이 있습니다. 오늘은 파이썬에서의 자료구조에 대해서 알아보기로 하겠습니다.

파이썬에서의 자료구조

리스트 (List)

1) 값을 순서대로 모아서 관리하는 구조

2) 특징

    - 원소, 요소(Element), 항목(Item) :  리스트 안의 하나하나의 값.

    - 리스트의 원소 개수 조회 :  내장함수 len(리스트) 사용가능.

    - 원소들은 index를 가지며 index로 관리(조회, 변경) 가능하다.

    - 리스트의 index는 문자열의 index와 동작이 같다.

    - 다른 타입의 값들을 모을 수 있다.

    - 리스트의 원소들은 다른 값으로 바꿀 수 있다.

3) 리스트 만들기

    - [값, 값, 값, .... ] 값들은 , 로 구분해서 넣는다.

    - 값들의 타입이 같지 않아도 된다.

    - 값들의 index는 0 부터 시작한다.

4) 리스트 indexing,  slicing

    - 문자열과 마찬가지로 index를 이용해 값을 조회하고 슬라이싱 한다.

5) 리스트 + 리스트 하면 두 리스트를 합친다.

6) 리스트 * n  리스트 원소를 n번 반복한 리스트를 반환한다.

 

ex)  ex_list = [ 0,1,2,3,4,5,6,7,8,9,10,11,12 ]

       ex_list[0]    =>  0번 index 원소를 조회한다.  값은  ' 0 '  이다.

       ex_list[1 : 10]   =>  1~9 index 원소를 조회한다.  값은 [1,2,3,4,5,6,7,8,9] 된다.

 

 

* 리스트 주요 메소드

메소드 설명 비고
append(값) 값을 마지막 원소로 추가 ex_list.append()
extend(리스트) 인수로 받은 리스트의 원소들을 추가 (+연산효과) ex_list.extend([1,2,3])
ex_list + [1,2,3] 과 동일함.
sort([reverse = False]) 리스트 내 원소를 오름차순 정렬 리스트내 원소들의 타입이 같아야 한다.
insert(index, 값) 값을 index에 삽입한다.  
index(값) 값의 index 번호를 반환한다.  
remove(값) 리스트에서 값과 일치하는 원소를 삭제한다. 일치하는 것 중 첫번째 원소만 삭제한다.
pop([index]) index의 값을 삭제하면서 반환한다. index생략시 마지막 원소 반환 삭제한다.
count(값) 매개변수에 전달한 값의 개수를 반환한다.  
clear() 모든 원소들을 한번에 제거한다.  

 

튜플 (Tuple)

1) 튜플은 리스트와 같이 순서대로 원소들을 저장하는 자료 구조이다.

2) 리스트와 다른 점은 원소를 변경할 수 없다.

3) 튜플 만들기

   - (값, 값, 값)

   - ( ) 생략 가능

   - 값, 값, 값

   - 원소가 1개인 튜플을 생성할 때는 원소 뒤에  ,  를 붙인다.

4) 리스트 튜플로 변환 :  tuple (리스트) 함수를 이용한다.

5) 주요 메소드

   - 튜플은 값을 변경하는 메소드는 없다.

   - index(값) :  값과 동일한 첫번째 원소가 몇번째 index 에 있는지 반환한다.

   - count(값) :  튜플 안에 매개변수로 전달한 값이 몇개 있는지 반환한다.

 

딕셔너리, Dictionary

1) 딕셔너리는 값을 키(key) - 값(value) 쌍의 형태로 저장하는 자료 구조이다.

2) 리스트나 튜플의 index의 역할을 하는 key를 직접 지정한다.

3) 딕셔너리 만들기

   -  { key1 :  value1,  key2 : value2,  key3 : value3 }

   -  key는 불변의 값들만 사용 가능하다. ( 숫자, 문자열, 튜플 )

   -  dict로 딕셔너리 만들기 :  dict 에서  키 = 값  형식으로 딕셔너리를 만들수 있다.

      딕셔너리  =  dict (key1 = value1,  key2 = value2)

      딕셔너리  =  dict ( [ ( key1, value1 ), ( key2, value2 ) ] )

      딕셔너리  =  dict ( { key1 : value1,  key2 : value2 } )

4) 딕셔너리의 원소 조회 및 변경

   ex)  fruit_ex = { '사과' : 20, '귤' : 30, '참외' : 40 }

          fruit_ex [ '사과' ]    =>  결과값은  20 이다.

          fruit_ex [ '수박' ] = 50   # 수박은 없었던 key 이므로 추가 된다.

          fruit_ex [ '사과' ] = 15   # 사과는 원래 있는 key 이므로 값이 변경된다. 

 

 

* 딕셔너리 메소드

메소드 설명
pop (key)  key와 연결된 값을 반환하면서 삭제한다. key가 없으면 key error 가 발생한다.
clear () 모든 원소 삭제
del dict [ key ] 특정  key 의 값을 삭제
get (key, 기본값) key 와 연결된 값을 반환한다. 단, 찾는 key의 값이 없을 경우 기본값을 반환한다.
items ()  key, value 쌍을 튜플로 묶어 리턴
keys () key 값들만 모아서 리턴
values () value 값들만 모아서 리턴

 

집합 (Set)

1) Set은 반복되는 값을 허용하지 않고 순서를 신경 쓰지 않는다.

2) Set 만들기

   -  { 값, 값, 값 }

   -  set() 를 이용해 만들기 :  set() 에 인수로 다른 자료 구조 객체를 넣어 만든다.

   -  중복되는 값은 하나만 넣어 만든다.

   -  딕셔너리는 key들을 모아 set 으로 만든다.

3) 주요 메소드

   -  add(값) :  집합에 요소 추가

   -  update(자료구조) :  한번에 여러 개의 요소를 추가

   -  pop() :  값을 하나씩 반환하면서 제거한다.

   -  remove(값) :  값을 찾아서 삭제한다. 값이 set 내에 없으면 keyError 발생한다.

4) 집합 연산

   -  집합 | 집합  :  합집합

   -  집합 & 집합 :  교집합

   -  집합 - 집합 :  차집합

 

자료구조에 대한 상세설명

728x90
반응형

댓글