2.8 여러 개의 자료를 한 변수에 담기#

지금까지는 하나의 변수에 하나의 자료를 저장했다. 그러나 파이썬에서는 하나의 변수에 여러 개의 자료를 한꺼번에 저장하고 필요한 때 꺼내 쓸 수도 있다. 파이썬에서 하나의 변수에 여러 개의 자료를 저장하고 쓰는 데는 크게 두 가지 방법을 사용한다.

  • 여러 개의 자료가 순서가 있을 때는 리스트(list) 자료형 사용

  • 여러 개의 자료가 이름이 있을 때는 딕셔너리(dictionary) 자료형 사용

자료의 순서만 가지는 리스트 자료형#

리스트 자료형에는 여러개의 자료를 순서에 따라 저장할 수 있다. 리스트 자료형 변수는 다음처럼 만든다.

리스트변수 = [자료1, 자료2, 자료3]

이 때 자료의 개수는 얼마가 되든 상관없다.

x = [88, 90, 100]
x
[88, 90, 100]

인덱싱#

리스트 자료형 변수에서 특정한 자료를 꺼내려면 인덱싱(indexing)이라는 연산을 사용한다. 인덱싱 연산을 하려면 다음과 같이 대괄호(bracket)를 변수 이름 끝에 붙이고, 그 안에 자료의 순서를 뜻하는 숫자를 넣는다.

리스트변수[인덱스]

이 때 자료의 순서를 뜻하는 숫자를 인덱스(index)라고 한다. 파이썬에서는 가장 첫번째 자료를 가리키는 인덱스는 1이 아니라 0이다.

x[0]
88
x[1]
90
(x[0] + x[1]) / 2
89.0

연습 문제 1

시험 성적을 나타내는 임의의 숫자 5개를 리스트 변수 score에 넣고 평균을 구한다.

자료의 이름만 가지는 딕셔너리 자료형#

딕셔너리 자료형에는 여러개의 자료를 이름을 붙여서 저장할 수 있다. 딕셔너리 자료형 변수는 다음과 같이 만든다.

딕셔너리변수 = {자료이름1: 자료값1, 자료이름2: 자료값2, 자료이름3: 자료값3}

이 때 자료의 개수는 얼마가 되든 상관없다.

파이썬에서는 자료의 이름을 키(key)라고 하고 자료의 값을 값(value)라고 한다.

b = {"math": 88, "english": 90, "history": 100}
b
{'math': 88, 'english': 90, 'history': 100}

딕셔너리 자료형 변수에서 특정한 자료를 꺼낼 때도 마찬가지로 인덱싱(indexing) 연산을 한다. 딕셔너리 자료형 변수에서 인덱싱 연산을 할 때도 다음처럼 대괄호(bracket)를 변수 이름 끝에 붙이고 그 안에 자료의 키를 넣는다.

b["math"]
88
b["english"]
90
(b["math"] + b["english"]) / 2
89.0

파이썬에서는 자료의 키는 무엇이든 가능하다. 즉, 숫자도 키가 될 수 있다.

b2 = {1: 10, 2: 20}
b2
{1: 10, 2: 20}

연습 문제 2

  1. 윤년이 아닌 평년의 경우에 각 달의 날짜 수를 저장하는 변수 days를 만든다. 이 때 각 달을 표시하는 키는 두 글자짜리 문자열로 한다. 즉, 1월은 “01”, 2월은 “02”, 12월은 “12”로 한다.

  2. 변수 days를 이용하여 짝수 달의 평균 날짜 수를 구한다.

리스트와 딕셔너리에 들어가는 자료의 자료형#

리스트 변수에는 자료형이 같은 자료만 담을 수 있는 것은 아니고 자료형이 다른 자료들도 담을 수 있다. 예를 들어 정수형 자료와 실수형 자료, 그리고 문자열 자료를 한 리스트 변수에 넣을 수도 있다.

d = [1, 3.14, "pi"]
d[0]
1
d[1]
3.14
d[2]
'pi'

심지어 리스트 변수에 또 다른 리스트 변수나 딕셔너리 변수를 넣을 수도 있다.

e = [[1, 10], [2, 20]]
e[0]
[1, 10]
e[1]
[2, 20]
e[0][0]
1
e[0][1]
10
e[1][0]
2
e[1][1]
20
f = [{0: 0, 1: 10}, {0: 1, 1: 2}]
f[0]
{0: 0, 1: 10}
f[1]
{0: 1, 1: 2}

딕셔너리 변수에도 여러가지 자료형의 자료를 넣을 수 있다.

g = {"a": [1, 2, 3], "b": {0: 1, 1: 2}}
g["a"]
[1, 2, 3]
g["b"]
{0: 1, 1: 2}