python 2

본 토픽은 현재 준비중입니다. 공동공부에 참여하시면 완성 되었을 때 알려드립니다.

List, Dictionary, Tuple

리스트

리스트란 다른 언어에서는 배열(array)라고 하는 형태의 데이터 타입이다.  리스트는 연관된 데이터를 모아서 관리하기 위해서 사용하는 데이터 타입이다. 변수가 하나의 데이터를 임시로 저장하기 위한 것이라면 리스트는 여러 개의 데이터를 저장하기 위한 것이라고 할 수 있다. 아래의 예제를 보자. 변수 name에는 문자 egoing이 할당되었다. 이제부터 name을 호출하면 문자 egoing을 사용할 수 있다.

name = 'egoing'
print name

리스트의 생성

그렇다면 여러 개의 데이터를 하나의 리스트에 담아서 관리할 수 있는 방법은 없을까? 있다. 리스트를 쓰면 된다. 변수 member에 회원정보를 담아보자. 대괄호([])는 리스트를 만드는 기호다. 대괄호 안에 데이터를 콤마(,)로 구분해서 나열하면 리스트가 된다.

member = ['egoing', 'k8805', 'sorialgi']

하나의 변수에 3개의 데이터를 담았다. 각각의 데이터를 아이템(item)이라고 부른다. 자 그럼 이 데이터를 꺼내오려면 어떻게 해야 할까? 아래의 예제를 보자.

member = ['egoing', 'k8805', 'sorialgi']
print member[0]
print member[1]
print member[2]

결과는 다음과 같다.

egoing
k8805
sorialgi

즉 리스트에 담겨있는 값을 가져올 때는 대괄호 안에 숫자를 넣는다. 이 숫자를 색인(index)라고 부르고 0부터 시작한다. 이 값을 이용해서 리스트에 저정된 값을 찾을 수 있다.

리스트가 없다면

그렇다면 리스트가 없다면 어떻게 될까? 예를 들어 맴버의 이름을 제공하는 함수를 제공해야 한다고 해보자. 그런데 함수는 하나의 값만을 반환(return) 할 수 있다. 아래의 예를 보자.

def get_member1():
    return 'egoing'

print get_member1()


def get_member2():
    return 'k8805'

print get_member2()


def get_member3():
    return 'sorialgi'

print get_member3()

하나의 함수는 하나의 값만을 반환할 수 있기 때문에 위와 같이 각각의 회원정보를 반환하는 함수를 만들었다.

이번엔 리스트를 이용한 아래의 코드를 보자. 맴버를 담고 있는 리스트를 반환하고 있다. 간단하지 않은가?

def get_members():
    return ['egoing', 'k8805', 'sorialgi']

print get_members()

리스트의 사용

리스트의 진가는 반복문과 결합했을 때 나타난다. 반복문으로 리스트에 담긴 정보를 하나씩 꺼내서 처리 할 수 있기 때문이다. 다음 예제를 보자 .

def get_members():
    return ['egoing', 'k8805', 'sorialgi']

members = get_members()

for member in members:
	print member.capitalize()

결과는 아래와 같다.

Egoing
K8805
Sorialgi

위의 예제에서 주목해야 할 것은 반복문과 리스트를 결합한 부분이다. 반복문을 이용해서 리스트 members의 내용을 하나씩 꺼낸 후에 이름의 첫글자를 대문자로 변경한 후에 출력하고 있다. (알파벳의 첫글자를 대문자로 만드는 방법은 String.captalize를 참고) 정리하면, 리스트란 연관된 정보를 하나의 그룹으로 관리하기 위해서 사용한다. 그리고 그 정보를 처리 할 때는 반복문을 이용한다.

리스트의 제어

리스트는 복수의 데이터를 효율적으로 관리, 전달하기 위한 목적으로 고안된 데이터 타입이다. 따라서 데이터의 추가/수정/삭제와 같은 일을 편리하게 할 수 있도록 돕는 다양한 기능을 가지고 있다. 몇가지 중요한 기능들만 살펴보자.

리스트의 크기

아래와 같은 방법으로 리스트의 크기를 알아낼 수 있다.

l = [1, 2, 3, 4, 5]
print len(l)

리스트의 조작

추가

다음은 리스트의 끝에 아이템을 추가하는 방법이다. 리스트 li는 a, b, c, d, e, f가 됐다.

li = ['a', 'b', 'c', 'd', 'e']
li.append('f')
print li

다음은 복수의 아이템을 리스트에 추가하는 방법이다.

li = ['a', 'b', 'c', 'd', 'e']
li.extend(['f', 'g'])
print li

다음은 리스트의 시작점에 아이템을 추가하는 방법이다. 리스트 li는 z, a, b, c, d, e가 됐다. insert의 첫번째 인자는 추가할 아이템의 위치를 의미하고 두번째 인자는 추가할 값을 의미한다.

li = ['a', 'b', 'c', 'd', 'e']
li.insert(0, 'z')
print li

만약 두번째 인덱스 뒤에 대문자 B를 넣고 싶다면 아래와 같이한다.

li = ['a', 'b', 'c', 'd', 'e']
li.insert(2, 'B')
print li

제거

다음은 리스트의 시작점의 아이템을 제거하는 방법이다. pop의 인자로 0을 주면 리스트의 첫번째 아이템을 제거한다. 결과는 b, c, d, e 다.

li = ['a', 'b', 'c', 'd', 'e']
li.pop(0)
print li

다음은 리스트 끝점의 원소를 리스트 li에서 제거한다. 결과는 a, b, c, d 다.

li = ['a', 'b', 'c', 'd', 'e']
li.pop()
print li

정렬

다음은 정렬하는 방법이다. 결과는 a, b, c, d, e 다.

li = ['c', 'e', 'a', 'b', 'd']
li.sort()
print li

역순으로 정렬하고 싶을 때는 아래와 같이 한다.

li = ['c', 'e', 'a', 'b', 'd']
li.sort(reverse = True)
print li

Dictionary

지금까지 살펴본 리스트는 아이템에 대한 식별자로 숫자를 사용했다. 데이터가 추가되면 리스트 전체에서 중복되지 않는 인덱스가 자동으로 만들어져서 그 데이터에 대한 식별자가 된다. 만약 인덱스로 문자를 사용하고 싶다면 딕셔너리(dictionary)를 사용해야 한다. 다른 언어에서는 연관배열(associative array) 또는 해쉬( hash)라고 한다. 

Dictionary 생성

다음은 딕셔너리를 만드는 법이다.

grades = {'egoing': 10, 'k8805': 6, 'sorialgi': 80}

위의 예제에서 egoing은 key가 되고, 10은 value가 된다. 아래는 해쉬를 만드는 다른 방법이다.

grades = {}
grades['egoing'] = 10
grades['k8805'] = 6
grades['sorialgi'] = 80
print grades

다음은 특정한 key의 값을 가져오는 법이다. 결과는 80이다.

grades = {'egoing': 10, 'k8805': 6, 'sorialgi': 80}
print grades['sorialgi']

다음은 dictionary의 데이터를 기준으로 반복작업을 하는 방법이다.

grades = {'egoing': 10, 'k8805': 6, 'sorialgi': 80}
for key in grades:
    print("key : %s \t value : %s" % (key, grades[key]))

결과는 아래와 같다.

key : sorialgi  value : 80
key : k8805     value : 6
key : egoing    value : 10

for 문은 in 뒤에 따라오는 리스트의 인덱스를 in 앞의 변수 key에 담아서 반복문을 실행한다. 반복문이 실행될 때 변수 key의 값으로 egoing, k8805, sorialgi가 순차적으로 할당되기 떄문에 grades[key]를 통해서 딕셔너리의 값을 알아낼 수 있다.

Tuple

튜플(Tuple)은 리스트와 거의 비슷하지만 한번 만들면 변경하지 못한다. 에플리케이션 전반에 걸쳐서 변경되면 안되는 정보를 표현하기에 좋은 데이터 형식이다.

다음은 튜플을 생성하는 법이다.

tp = ('a', 'b', 'c', 'd', 'e')

다음은 튜플에서 필요한 데이터를 가져오는 방법이다. 결과는 b 다.

tp = ('a', 'b', 'c', 'd', 'e')
print tp[1]

참고

댓글

댓글 본문
  1. Ryan Cho
    감사합니다
  2. egoing
    수정했습니다. ^^
    대화보기
    • egoing
      헉 지금 확인했습니다. 변경했어요!
      대화보기
      • ddojai
        List가 php강의로 되어있네요.
      • 강민우
        예제에 PHP가 있네요! 변경해주세요~
      버전 관리
      egoing@gmail.com
      현재 버전
      선택 버전
      graphittie 자세히 보기