파이썬(Python) 기초 - 리스트, 튜플 자료형

170817

지난 시간에 공부했던 기초 문법, 숫자, 문자열 자료형에 이어 이번에는 리스트, 튜플 자료형에 대해 알아보겠다.


리스트 자료형

리스트는 사용하면 숫자 모음을 간단하게 표현할 수 있다.

odd = [1, 3, 5, 7, 9]
a = [ ]
b = ['Hello', 'World']
c = ['Hello', 'World', 1, 2]
# 빈 리스트는 a = list()로 생성할 수 있으며, 리스트 안에는 어떠한 자료형도 포함시킬 수 있다.

리스트도 문자열처럼 인덱싱과 슬라이싱이 가능하다.

a = [1, 2, 3]
a[0]
1

a = [1, 2, ['a', 'b']]
a[0]
1
a[-1]
['a', 'b']
a[-1][0]
'a'
# 리스트가 이중일 때와 삼중일 때 요소 값을 어떻게 꺼내 쓰는지 알아두자.

a = [1, 2, 3, 4, 5]
a[0:2]
[1, 2]
b = [:2]
c = [2:]
b
[1, 2]
c
[3 ,4, 5]
# 슬라이싱은 문자열 때와 동일하며, 리스트가 이중, 삼중이어도 인덱싱처럼 똑같이 적용한다.

리스트 역시 연산과 수정, 삭제가 가능하다.

a = [1, 2, 3]
b = [4, 5, 6]
a + b
[1, 2, 3, 4, 5, 6]
a * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
# 참고로, a[2] 이 형식은 숫자이므로 만약에 다른 문자열과 더하고 싶으면 str(a[2]) 같이 형변환을 해 줘야 한다.

a = [1, 2, 3]
a[2] = 4
a
[1, 2, 4]

a[1:2]
[2]
a[1:2] = ['a', 'b', 'c']
a
[1, 'a', 'b', 'c', 4]
# 여기서 주의할 점은, a[1:2]와 a[1]은 전혀 다른 요소다. 만약에 a[1:2]를 바꾸지 않고 a[1]을 바꾸게 되면 리스트 a의 두 번째 요소를 바꾼다는 의미로 결과값이 [1, ['a', 'b', 'c'], 4]로 바뀐다.

a[1:3] = [ ]
a
[1, 'c', 4]
del a[1]
a
[1, 4]
# del 함수는 파이썬이 자체적으로 가지고 있는 삭제 함수이며, 'del 객체' 형식으로 사용한다. 객체란, 파이썬에서 사용되는 모든 자료형을 말한다.

리스트도 변수명 뒤에 ‘.’을 붙여서 여러 가지 리스트 관련 함수들을 사용할 수 있다.

a = [1, 2, 3]
a.append(4)
a
[1, 2, 3, 4]
a.append([5, 6])
a
[1, 2, 3, 4, [5, 6]]
# 리스트에 요소 추가

a = [1, 4, 3, 2]
a.sort()
a
[1, 2, 3, 4]
a = ['a', 'c', 'b']
a.sort()
a
['a', 'b', 'c']
# 리스트 정렬

a = ['a', 'c', 'b']
a.reverse()
a
['b', 'c', 'a']
# 리스트 뒤집기

a = [1, 2, 3]
a.index(3)
2
# 리스트 위치 반환. index(x) 함수는 리스트에 x라는 값이 있으면 x의 위치값을 리턴하고, 없으면 값 오류가 발생한다.

a = [1, 2, 3]
a.insert(0, 4)
[4, 1, 2, 3]
# 리스트에 요소 삽입. insert(a, b)는 리스트의 a번째 위치에 b를 삽입하는 함수다.

a = [1, 2, 3, 1, 2, 3]
a.remove(3)
[1, 2, 1, 2, 3]
# 리스트 요소 제거. remove(x)는 리스트에서 첫 번째로 나오는 x를 삭제하는 함수다.

a = [1, 2, 3]
a.pop()
3
a
[1, 2]
a.pop(1)
2
a
[1]
# 리스트 요소 끄집어내기. pop()은 리스트의 맨 마지막 요소를 돌려 주고 그 요소는 삭제한다. pop(x)는 리스트의 x번째 요소를 돌려 주고 그 요소는 삭제한다.

a = [1, 2, 3, 1]
a.count(1)
2
# 리스트에 포함된 요소 x의 개수 세기

a = [1, 2, 3]
a.extend([4, 5])
a
[1, 2, 3, 4, 5]
b = [6, 7]
a.extend(b)
a
[1, 2, 3, 4, 5, 6, 7]
# 리스트 확장. extend(x)에서 x에는 리스트만 올 수 있으며 원래의 a 리스트에 x 리스트를 더하게 된다.


튜플 자료형

튜플(Tuple)은 몇 가지를 빼고 리스트와 거의 비슷하다. 리스트와 다른 점은 아래와 같다.

튜플의 모습은 다음과 같다.

t1 = ( )
t2 = (1, )
t3 = (1, 2, 3)
t4 = 1, 2, 3
t5 = ('a', 'b', ('ab', 'cd'))

실제 프로그램에서는 값이 변경되는 형태의 변수가 많기 때문에 평균적으로 튜플보다는 리스트를 많이 사용하게 된다. 그리고, 튜플의 요소값을 변경하거나 삭제 시 다음과 같은 오류가 발생한다.

t1 = (1, 2, 'a', 'b')
del t1[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
t1 = (1, 2, 'a', 'b')
t1[0] = 'c'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

튜플은 값을 변화시킬 수 없지만 리스트처럼 인덱싱, 슬라이싱, 연산이 가능하다.

t1 = (1, 2, 'a', 'b')
t1[0]
1
t1[3]
'b'
# 인덱싱하기

t1 = (1, 2, 'a', 'b')
>>> t1[1:]
(2, 'a', 'b')
# 슬라이싱하기

t2 = (3, 4)
>>> t1 + t2
(1, 2, 'a', 'b', 3, 4)
# 튜플 더하기

t2 * 3
(3, 4, 3, 4, 3, 4)
# 튜플 곱하기

(다음에 계속!)