본문 바로가기

Programming/Python

Do it! 공부단 2일차 | ch02 자료형_리스트와 튜플

앞서 배운 자료형인 숫자와 문자열 만으로는 프로그램을 만들기에 부족하다. 리스트와 튜플 자료형을 알아보자.

 

01 리스트 자료형

01-1 리스트 만들기

리스트(List) 자료형을 사용하면 아래와 같이 요소의들의 모음을 표현할 수 있다.

리스트명 = [요소 1, 요소 2, 요소 3, ···]

 

리스트 안에는 어떤 자료형도 포함시킬 수 있고 비어있을 수도 있다. 다양한 생김새를 보자.

>>> a = []
>>> b = [1,2,3]
>>> c = ['Life', 'is', 'too', 'short']
>>> d = [1, 2, 'Life', 'is']
>>> e = [1, 2, ['Life', 'is']]

 

01-2 리스트의 인덱싱과 슬라이싱

문자열에서처럼 리스트 역시 인덱싱과 슬라이싱을 할 수 있다.

 

 

리스트 인덱싱

>>> b[0]
1
>>> b[1]+b[2]
5

위 예제에서 만들었던 리스트 변수 b를 사용했다.

 

>>> e = [1, 2, ['Life', 'is']]
>>> e[2][0]
'Life'

이번에는 변수 e를 사용했다. 리스트 속 리스트 값을 인덱싱해 출력하는 것도 가능하다.

 

 

리스트 슬라이싱

>>> e[:2]
[1, 2]
>>> e[2:]
[['Life', 'is']]

슬라이싱 역시 문자열에서의 방법과 같다.

 

01-3 리스트의 연산

리스트 더하기(+)

>>> b = [1,2,3]
>>> c = ['Life', 'is', 'too', 'short']
>>> b + c
[1, 2, 3, 'Life', 'is', 'too', 'short']

 

*서로 다른 자료형의 연산은 불가능하다.

>>> b = [1,2,3]
>>> b[0] + 'hi'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> str(b[0]) + 'hi'
'1hi'

 서로 다른 자료형의 연산 시 형 오류(TypeError)가 발생한다. 이를 해결하기 위해서는 자료형을 맞춰주어야 한다.

 

 

리스트 반복하기(*)

>>> b = [1,2,3]
>>> b * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]

 

 

리스트 길이 구하기(len)

>>> c = ['Life', 'is', 'too', 'short']
>>> len(c)
4

 

01-4 리스트의 수정과 삭제

리스트는 값을 수정하거나 삭제할 수 있다.

 

리스트에서 값 수정하기

>>> b = [1,2,3]
>>> b[2] = 4
>>> b
[1, 2, 4]

 

 

리스트에서 값 삭제하기(del)

del 객체

*객체란 파이썬에서 사용되는 모든 자료형을 말한다.

>>> c = ['Life', 'is', 'too', 'short']
>>> del c[3]
>>> c
['Life', 'is', 'too']
>>> del c[:2]
>>> c
['too']

 

01-4 리스트 관련 함수

리스트에 요소 추가하기(append)

append 함수를 사용하면 리스트의 맨 마지막에 요소를 덧붙일 수 있다.

변수명.append(요소)

>>> c = ['Life', 'is', 'too']
>>> c.append('short')
>>> c
['Life', 'is', 'too', 'short']

 

 

리스트 정렬하기(sort)

sort 함수는 리스트를 순서대로 정렬한다. 숫자는 오름차순으로, 문자의 경우 알파벳 순서로 정렬할 수 있다.

>>> b = [1,2,3,6,4,5]
>>> b.sort()
>>> b
[1, 2, 3, 4, 5, 6]

 

 

리스트 뒤집기(reverse)

reverse 함수는 리스트를 역순으로 뒤집는다. 이때 정렬은 따로 하지 않는다.

*reverse 함수는 반환값이 없고, reversed 함수를 쓰면 리스트가 반환된다.

>>> c = ['Life', 'is', 'too', 'short']
>>> c.reverse()
>>> c
['short', 'too', 'is', 'Life']

 

 

위치 반환하기(index)

index(x) 함수는 리스트에 x값이 있으면 x의 위치 값을 돌려준다.

>>> b = [1, 2, 3, 4, 5, 6]
>>> b.index(3)
2

 

이때 x값이 없으면 값 오류(ValueError)가 발생한다.

>>> b.index(7)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 7 is not in list

 

 

리스트에 요소 삽입하기(insert)

insert(a, b)는 리스트의 a번째 위치에 b를 삽입한다.

>>> b = [1, 2, 3, 4, 5, 6]
>>> b.insert(0,0)
>>> b
[0, 1, 2, 3, 4, 5, 6]
>>> b.insert(7,7)
>>> b
[0, 1, 2, 3, 4, 5, 6, 7]

 

 

리스트 요소 제거하기(remove)

remove(x)는 리스트에서 첫 번째로 나오는 x를 삭제한다.

>>> a = [1,2,1,3]
>>> a.remove(1)
>>> a
[2, 1, 3]

 

 

리스트 요소 꺼내기(pop)

pop()은 리스트의 맨 마지막 요소를 돌려주고 그 요소를 삭제한다.

>>> b = [0, 1, 2, 3, 4, 5, 6, 7]
>>> b.pop()
7
>>> b
[0, 1, 2, 3, 4, 5, 6]
>>> b.pop()
6
>>> b
[0, 1, 2, 3, 4, 5]

 

인덱스를 사용해 원하는 값을 꺼낼 수도 있다.

>>> b.pop(2)
2
>>> b
[0, 1, 3, 4, 5]

 

 

리스트에 포함된 요소 x의 개수 세기(count)

count(x)는 리스트 안에 x가 몇 개 있는지 알려준다.

>>> a = [1,1,1,3,2,5]
>>> a.count(1)
3

 

 

리스트 확장하기(extend)

extend(x)에서 x에는 리스트만 올 수 있으며 원래의 리스트에 x리스트를 더한다.

>>> a = [1,2,3]
>>> a.extend([4,5])
>>> a
[1, 2, 3, 4, 5]

 

02 튜플 자료형

튜플(Tuple)은 리스트와 거의 비슷하며 차이점은 다음과 같다. 

 

  • 리스트는 []로 둘러싸지만 튜플은 ()로 둘러싼다.
  • 리스트는 그 값의 생성·삭제·수정이 가능하지만 튜플은 그 값을 바꿀 수 없다.

 

02-1 튜플 만들기

튜플명 = (요소 1, 요소 2, 요소 3, ···)

>>> t1 = ()
>>> t2 = (1,)
>>> t3 = (1,2,3)
>>> t4 = 1,2,3
>>> t5 = ('a', 'b', ('ab', 'cd'))
  • 튜플이 단 하나의 요소만을 가질 때에는 요소 뒤에 콤마(,)를 반드시 붙여야 한다(t2).
  • 괄호는 생략해도 상관없다(t4).

 

02-2 튜플 다루기

  • 튜플은 값을 변화시킬 수 없는 점만 제외하면 리스트와 완전히 동일하다.
  • 리스트에서 처럼 인덱싱, 슬라이싱, 더하기, 곱하기, 길이 구하기를 할 수 있다.

 


이 글은 책 『Do it! 점프 투 파이썬』을 읽은 후 작성한 글입니다.

 

Do it! 점프 투 파이썬

코딩을 처음 배우는 중·고등학생과 나만의 경쟁력을 갖추고 싶은 문과생, 소프트웨어 시대에 대비하여 새로운 스펙을 준비하려는 직장인까지! 모두 ‘점프 투 파이썬’으로 프로그래밍을 시작

www.easyspub.co.kr