Ruser

3.자료 구조 본문

Python/파이썬 기초

3.자료 구조

swub 2019. 3. 25. 16:37

3. 자료구조

3-1. 리스트

리스트(list)는 값을 순서대로 저장하는 자료구조이다.

리스트 만들기

In [1]:
a = ["a","b","c"] # 대괄호안에 값을 넣어 리스트를 작성할 수 있다.
a
Out[1]:
['a', 'b', 'c']
In [2]:
b = [1, 2, 3] # 숫자도 마찬가지
b
Out[2]:
[1, 2, 3]
In [3]:
list('abc') # list(): 여러 값들을 리스트 형태로 만들어 준다.
Out[3]:
['a', 'b', 'c']

길이(length) 확인

In [4]:
len(a) # 변수 a의 길이가 몇인지 (몇개의 값이 들어있는지) 보여준다.
Out[4]:
3

인덱싱

  • 리스트의 특정위치의 값을 선택할때 사용한다.
  • 파이썬의 인덱스는 0부터 시작한다.
In [5]:
a[0]
Out[5]:
'a'
  • 마이너스(-)를 사용하여 뒤쪽에서부터 인덱싱을 할 수 있다.
In [6]:
a[-1]
Out[6]:
'c'

슬라이싱

  • 인덱스를 범위로 선택하는 방법인데 파이썬에서는 a:b를 인덱싱하면 a부터 b미만까지 가 인덱싱 된다.
In [7]:
a[0:2] # 세번째(2) 미만인 첫번째(0) 부터 두번째(1)까지 인덱스 값을 출력 
Out[7]:
['a', 'b']
In [8]:
a[:3] # 처음부터 끝까지
Out[8]:
['a', 'b', 'c']
  • 간격으로도 인덱싱 가능
  • 예 : [a:b:2] a부터 b미만 까지 2간격으로
In [9]:
a[::2] # 처음부터 끝까지 2간격
Out[9]:
['a', 'c']

리스트 수정

  • 데이터 추가 : .append()
In [10]:
a.append('d') # a 에 'd' 추가
a
Out[10]:
['a', 'b', 'c', 'd']
  • 데이터 제거 : .pop(), del()
In [11]:
a.pop(-1) # 마지막 값 제거
a
Out[11]:
['a', 'b', 'c']
In [12]:
del a[-1] # 마지막 값 제거
a
Out[12]:
['a', 'b']
  • 데이터 찾기 : .index()
In [13]:
x = ['a','b','c','d','e']
x.index('c')
Out[13]:
2
  • 데이터 바꾸기
In [14]:
x[x.index('c')] = 'k'
x
Out[14]:
['a', 'b', 'k', 'd', 'e']
  • 합치기
In [15]:
['a','b','c'] + ['d','e']
Out[15]:
['a', 'b', 'c', 'd', 'e']
  • 반복하기
In [16]:
['a','b','c'] * 2
Out[16]:
['a', 'b', 'c', 'a', 'b', 'c']

3-2. 튜플

  • 튜플(tuple)은 리스트와 같이 값을 순서대로 저장하는 자료 구조다. 리스트와 달리 튜플은 수정이나 변경을 할 수 없다.
  • 튜플의 경우 고정된 형태의 값을 사용할 때 주로 사용된다. 프로그램이 복잡해질 경우에 리스트는 실수로 값이 변경될 수 있기 때문에 고정된 값을 사용하는 경우는 튜플을 사용하여 의도하지 않은 변화가 생기지 않게끔 대비할 수 있다.

튜플 만들기

  • 리스트는 대괄호 "[]" 를 사용하여 만들 었다.
  • 튜플의 경우 소괄호 "()" 를 사용하여 만든다.
In [17]:
(1,2,3)
Out[17]:
(1, 2, 3)
  • 리스트를 튜플로 만드는 함수 : tuple()
In [18]:
a = ['a','b','c'] # 리스트
a
Out[18]:
['a', 'b', 'c']
In [19]:
tuple(a) # 튜플로 변경
Out[19]:
('a', 'b', 'c')

인덱싱

  • 튜플의 인덱싱 및 슬라이싱은 리스트와 같다.
  • 튜플의 합치기와 반복하기 도 리스트와 같다.

3-3. 사전(dict)

  • 사전(dictionary)란 특정 키(Key)에 값을 할당하는 구조이다.
In [20]:
exam = {
    '수학' : 95,
    '영어' : 20
}
In [21]:
type(exam)
Out[21]:
dict
In [22]:
exam['수학']
Out[22]:
95
  • 사전의 키에는 숫자,문자,튜플 등 고정적인 값들만 사용 가능하다.

관련 메소드

  • 사전의 키 확인 : .keys()
In [23]:
exam.keys()
Out[23]:
dict_keys(['수학', '영어'])
  • 사전의 값 확인 : .values()
In [24]:
exam.values()
Out[24]:
dict_values([95, 20])
  • 사전의 키와 값 모두 확인 : .items()
In [25]:
exam.items()
Out[25]:
dict_items([('수학', 95), ('영어', 20)])

키 확인 및 삭제

  • 사전의 특정 키 존재 확인 : in
In [26]:
'수학' in exam
Out[26]:
True
  • 삭제 : del
In [27]:
del exam['수학']
exam
Out[27]:
{'영어': 20}
  • 사전 전체를 비우고 싶은 경우 : .clear()
In [28]:
exam.clear()
exam
Out[28]:
{}

3-4. 집합

  • 집합(set)은 반복되는 값을 허용하지 않으며 순서를 상관하지 않는다.

집합 만들기

  • 집합은 중괄호 "{}" 를 사용하여 만든다.
In [29]:
s = {1, 1, 2, 4, 4, 2, 2, 3}
s
Out[29]:
{1, 2, 3, 4}
In [30]:
len(s)
Out[30]:
4

추가 및 제거

  • 집합에 값 추가 : .add()
In [31]:
s.add(5)
s
Out[31]:
{1, 2, 3, 4, 5}
  • 두개 이상의 값을 추가할 경우 : .update()
In [32]:
s.update([6, 7])
s
Out[32]:
{1, 2, 3, 4, 5, 6, 7}
  • 값 제거 : .remove()
In [33]:
s.remove(7)
s
Out[33]:
{1, 2, 3, 4, 5, 6}
In [34]:
6 in s
Out[34]:
True

집합 연산

  • 합집합 : |
In [35]:
x = {1,2,3}
y = {2,3,4}
In [36]:
x|y
Out[36]:
{1, 2, 3, 4}
  • 교집합 : &
In [37]:
x & y
Out[37]:
{2, 3}
  • 차집합 : -
In [38]:
x - y
Out[38]:
{1}

3. 자료 구조


'Python > 파이썬 기초' 카테고리의 다른 글

2. Python 자료구조  (0) 2019.03.05
1. 주피터 사용 방법  (0) 2019.03.05