작성자: admin 작성일시: 2016-09-13 15:15:03 조회수: 1791 다운로드: 172
카테고리: Python 태그목록:

파이썬에서 여러 개의 자료를 한 변수에 담기

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

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

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

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

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

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

In:
x = [88, 90, 100]
In:
x
Out:
[88, 90, 100]

인덱싱

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

리스트변수[인덱스]

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

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

연습 문제 1

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

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

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

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

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

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

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

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

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

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

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

연습 문제 2

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

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

자료형이 다른 경우

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

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

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

In:
e = [[1, 10], [2, 20]]
In:
e[0]
Out:
[1, 10]
In:
e[1]
Out:
[2, 20]
In:
e[0][0]
Out:
1
In:
e[0][1]
Out:
10
In:
e[1][0]
Out:
2
In:
e[1][1]
Out:
20

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!