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}