ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] 파이썬 입문 4(튜플, 집합, 사전)
    CSE/Python 2015. 12. 18. 11:49

    1. 파이썬 입문

     1-1. 튜플(Tuple)

      튜플을 사용하면 값들을 단일 개체에 채워 넣음으로써 간단한 데이터 구조를 생성할 수 있습니다. 다음과 같이 값들을 괄호로 둘러싸서 생성합니다.



    1
    2
    stock = ('Geek'11213.05)
    person = (firstname, lastname, address)
    cs




      특수한 구문을 사용하여 0 개와 1 개의 요소를 가지는 튜플도 정의할 수 있습니다.



    1
    2
    3
    4
    = ()    
    = (item1, )
    = item, 
     
    cs




      리스트처럼 튜플의 값도 숫자 색인으로 추출할 수 있습니다. 하지만 다음과 같이 튜플을 변수들로 풀어헤치는 방식이 더 자주 쓰입니다.



    1
    2
    name, shares, price = stock
    firstname, lastname, address = person
    cs






      리스트가 지원하는 대부분의 연산(색인, 분할, 연결 등)을 튜플도 지원하지만 한 번 생성되고 나면 튜플의 내용을 변경할 수 없다는 게 단점입니다. 따라서, 튜플은 항목을 추가하거나 삭제할 수 있는 객체들의 컬렉션이 아니라, 여러 부분으로 이루어진 단일 객체로 보는 것이 더 적절합니다.


      데이터를 저장하는데 튜플과 리스트를 함께 사용하기도 합니다. 예를 들어, 다음 프로그램은 콤마로 구분되는 여러 열을 갖는 데이터를 읽어 들이는 방법을 보여줍니다.




     * portfolio.csv


    1
    2
    Google,500,1100.50
    Samsung,20,300.75
    cs




     * tuplelist.py




    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # -*- coding: utf-8 -*-
    filename = "portfolio.csv"
    portfolio = []
     
    for line in open(filename):
        fields = line.split(",")   # 줄을 분할하여 리스트 만듬
        name = fields[0]
        shares = int(fields[1])
        price = float(fields[2])
        stock = (name, shares, price)  # 튜플을 생성 
        portfolio.append(stock)    # 레코드 리스트에 추가 
     
    cs





     









     1-2. 집합(Set)

      집합은 객체들의 순서 없는 모음을 담는데 사용합니다.집합은 다음과 같이 set() 함수에 일련의 항목들을 넘겨주어 생성합니다.


    1
    2
    = set([3,5,9,10])
    = set("Hello")
    cs




      리스트나 튜플과 달리, 집합은 순서가 없기 때문에 숫자로 색인이 될 수 없습니다. 게다가, 집합은 요소가 중복되는 일이 없습니다. 위의 t 객체 집합의 값을 들여다보면 아래와 같은 결과를 얻게 됩니다.









      'l' 문자가 한 번만 나오는 것을 볼 수 있습니다.

      

      집합은 집합 연산(합집합, 교집합, 차집합, 대칭 차집합 등)을 지원합니다.



    1
    2
    3
    4
    = t | s # 합집합
    = t & s # 교집합
    = t - s # 차집합
    = t ^ s # 대칭 차집합
    cs





      add()와 update()는 집합에 새로운 아이템을 추가하는데 사용됩니다.



    1
    2
    = add('x')
    s.update([103145])
    cs




      remove()로 아이템을 제거할 수도 있습니다.







     1-3. 사전(Dictionary)

      사전은 키로 색인되는 객체들을 담는 연관 배열 혹은 해시 테이블입니다. 다음과 같이 값들을 중괄호({})로 둘러싸서 생성합니다.



    1
    2
    3
    4
    5
    stock = {
        "name""Apple",
        "shares"5000,
        "price"1200.50
    }
    cs

      




      사전의 요소에 접근하려면 다음과 같이 키 색인 연산자를 사용합니다.


    1
    2
    name = stock["name"]
    share = stock["shares"]
    cs



      사전의 추가 및 수정은 다음과 같이 수행합니다.



    1
    2
    stock["shares"= 500
    stock["date"= "December 18, 2015"
    cs






      주로 문자열이 키로서 사용되지만, 숫자나 튜플 같은 다른 파이썬 객체도 키로 사용될 수 있습니다. 리스트나 사전과 같이 그 내용이 바뀔 수 있는 객체는 키로 사용할 수 없습니다.


      사전은 순서 구분 없는 데이터를 빠르게 검색하기 위한 용도의 컨테이너로도 사용됩니다. 예를 들어, 다음은 주가를 담는 사전입니다.



    1
    2
    3
    4
    5
    6
    7
    prices = {
        "SAMSUNG"450.10,
        "LG"13.15,
        "VEGA"20.51,
        "APPLE"985.95
    }
     
    cs




      빈 사전은 다음 두 가지 방법으로 만들 수 있습니다.



    1
    2
    3
    prices = {}
    prices = dict()
     
    cs




      사전에 어떤 키가 들어 있는지는 다음과 같이 in 연산자로 검사합니다.



    1
    2
    3
    4
    5
    if "APPLE" in prices:
        p = prices["APPLE"]
    else:
        p = 0.0
     
    cs





      앞에 나온 바로 이 일련의 단계는 다음과 같이 더욱 간결하게 표현할 수 있습니다.



    1
    2
    = prices.get("LG"0.0)
     
    cs




      사전의 키 목록을 얻고 싶으면 사전을 리스트로 변환하면 됩니다.


     

    1
    2
    syms = list(prices)
     
    cs




      요소를 삭제하는데는 del 문을 사용합니다.


    1
    2
    del prices["LG"]
     
    cs





      사전은 파이썬 인터프리터에서 가장 섬세하게 튜닝된 데이터 타입입니다. 따라서, 만약 간단히 데이터를 저장하고 작업을 하려는 것이라면 직접 자신만의 데이터 구조를 만들기 보다는 사전을 사용하는 것이 대부분의 경우 훨씬 낫습니다.














    * 이 강좌는 '파이썬 완벽 가이드' 서적을 참고로 작성했습니다.


    댓글

Designed by Tistory.