-
[Python] 파이썬 입문 4(튜플, 집합, 사전)CSE/Python 2015. 12. 18. 11:49
1. 파이썬 입문
1-1. 튜플(Tuple)
튜플을 사용하면 값들을 단일 개체에 채워 넣음으로써 간단한 데이터 구조를 생성할 수 있습니다. 다음과 같이 값들을 괄호로 둘러싸서 생성합니다.
12stock = ('Geek', 11, 213.05)person = (firstname, lastname, address)cs 특수한 구문을 사용하여 0 개와 1 개의 요소를 가지는 튜플도 정의할 수 있습니다.
1234x = ()y = (item1, )z = item,cs 리스트처럼 튜플의 값도 숫자 색인으로 추출할 수 있습니다. 하지만 다음과 같이 튜플을 변수들로 풀어헤치는 방식이 더 자주 쓰입니다.
12name, shares, price = stockfirstname, lastname, address = personcs 리스트가 지원하는 대부분의 연산(색인, 분할, 연결 등)을 튜플도 지원하지만 한 번 생성되고 나면 튜플의 내용을 변경할 수 없다는 게 단점입니다. 따라서, 튜플은 항목을 추가하거나 삭제할 수 있는 객체들의 컬렉션이 아니라, 여러 부분으로 이루어진 단일 객체로 보는 것이 더 적절합니다.
데이터를 저장하는데 튜플과 리스트를 함께 사용하기도 합니다. 예를 들어, 다음 프로그램은 콤마로 구분되는 여러 열을 갖는 데이터를 읽어 들이는 방법을 보여줍니다.
* portfolio.csv
12Google,500,1100.50Samsung,20,300.75cs * tuplelist.py
123456789101112# -*- 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() 함수에 일련의 항목들을 넘겨주어 생성합니다.
12s = set([3,5,9,10])t = set("Hello")cs 리스트나 튜플과 달리, 집합은 순서가 없기 때문에 숫자로 색인이 될 수 없습니다. 게다가, 집합은 요소가 중복되는 일이 없습니다. 위의 t 객체 집합의 값을 들여다보면 아래와 같은 결과를 얻게 됩니다.
'l' 문자가 한 번만 나오는 것을 볼 수 있습니다.
집합은 집합 연산(합집합, 교집합, 차집합, 대칭 차집합 등)을 지원합니다.
1234a = t | s # 합집합b = t & s # 교집합c = t - s # 차집합d = t ^ s # 대칭 차집합cs add()와 update()는 집합에 새로운 아이템을 추가하는데 사용됩니다.
12t = add('x')s.update([10, 31, 45])cs remove()로 아이템을 제거할 수도 있습니다.
1-3. 사전(Dictionary)
사전은 키로 색인되는 객체들을 담는 연관 배열 혹은 해시 테이블입니다. 다음과 같이 값들을 중괄호({})로 둘러싸서 생성합니다.
12345stock = {"name": "Apple","shares": 5000,"price": 1200.50}cs 사전의 요소에 접근하려면 다음과 같이 키 색인 연산자를 사용합니다.
12name = stock["name"]share = stock["shares"]cs 사전의 추가 및 수정은 다음과 같이 수행합니다.
12stock["shares"] = 500stock["date"] = "December 18, 2015"cs 주로 문자열이 키로서 사용되지만, 숫자나 튜플 같은 다른 파이썬 객체도 키로 사용될 수 있습니다. 리스트나 사전과 같이 그 내용이 바뀔 수 있는 객체는 키로 사용할 수 없습니다.
사전은 순서 구분 없는 데이터를 빠르게 검색하기 위한 용도의 컨테이너로도 사용됩니다. 예를 들어, 다음은 주가를 담는 사전입니다.
1234567prices = {"SAMSUNG": 450.10,"LG": 13.15,"VEGA": 20.51,"APPLE": 985.95}cs 빈 사전은 다음 두 가지 방법으로 만들 수 있습니다.
123prices = {}prices = dict()cs 사전에 어떤 키가 들어 있는지는 다음과 같이 in 연산자로 검사합니다.
12345if "APPLE" in prices:p = prices["APPLE"]else:p = 0.0cs 앞에 나온 바로 이 일련의 단계는 다음과 같이 더욱 간결하게 표현할 수 있습니다.
12p = prices.get("LG", 0.0)cs 사전의 키 목록을 얻고 싶으면 사전을 리스트로 변환하면 됩니다.
12syms = list(prices)cs 요소를 삭제하는데는 del 문을 사용합니다.
12del prices["LG"]cs 사전은 파이썬 인터프리터에서 가장 섬세하게 튜닝된 데이터 타입입니다. 따라서, 만약 간단히 데이터를 저장하고 작업을 하려는 것이라면 직접 자신만의 데이터 구조를 만들기 보다는 사전을 사용하는 것이 대부분의 경우 훨씬 낫습니다.
* 이 강좌는 '파이썬 완벽 가이드' 서적을 참고로 작성했습니다.
'CSE > Python' 카테고리의 다른 글
[Python] 파이썬 어휘 규약과 구문 (0) 2015.12.18 [Python] 파이썬 입문 6(코루틴, 객체, 예외) (0) 2015.12.18 [Python] 파이썬 입문 5(반복문, 함수, 생성기) (0) 2015.12.18 [Python] 파이썬 입문 3(문자열, 리스트) (0) 2015.12.11 [Python] 파이썬 입문 2 (0) 2015.12.11 [Python] 파이썬 입문 (0) 2015.12.11