[Python] 자료형과 자료 구조(Tuple, List, Dictionary)

gillog·2020년 12월 23일
0

Python

목록 보기
15/18

🙆‍♂️ import 🙇‍♂️

Practical Python Programming - 2.1 자료형과 자료 구조



None 타입

email_address = None

None은 주로 선택값(optional value)이나 누락값(missing value)을 표시하는 데(placeholder) 사용한다.

조건문에서는 False로 평가한다.

if email_address:
    send_email(email_address, msg)

자료형

주식 보유 정보의 예를 살펴 보면 아래와 같다.

구글(GOOG) 주식을 490.10 달러에 100주 보유

이 '객체'는 세 부분으로 구성 된다.

  1. 종목명 (문자열 "GOOG")

  2. 주식 개수(정수형 100)

  3. 주식 가격(부동소수점 490.10)


Tuple

Tuple은 함께 묶인 값의 Collection이다.

s = ('GOOG', 100, 490.1)

()를 생략 하기도 한다.

s = 'GOOG', 100, 490.1

Tuple은 주로 단순한 레코드 또는 자료 구조를 표현하는 데 사용한다.

일반적으로 여러 부분으로 된 단일 객체다.
튜플은 데이터베이스 테이블의 단일 행과 비슷

튜플의 항목은 순서가 있다.
배열과 비슷

s = ('GOOG', 100, 490.1)
name = s[0]                 # 'GOOG'
shares = s[1]               # 100
price = s[2]                # 490.1

하지만 생성된 Tuple의 내용은 수정할 수 없다.

>>> s[1] = 75
TypeError: object does not support item assignment

현재 튜플을 가지고 새로운 튜플을 만들 수는 있다.

s = (s[0], 75, s[2])

Packing

Tuple은 서로 관련된 항목들을 단일 엔티티(entity)로 묶는 역할을 한다.

s = ('GOOG', 100, 490.1)

Tuple을 단일 객체로써 프로그램의 다른 부분으로 쉽게 전달할 수 있다.

Unpacking

Tuple을 전달받은 후에는 풀어서 각각의 변수를 사용할 수 있다.

name, shares, price = s
print('Cost', shares * price)

왼쪽의 변수 개수가 튜플 구조와 일치해야 한다.

name, shares = s     # 오류
Traceback (most recent call last):
...
ValueError: too many values to unpack

Tuple Vs List

Tuple은 읽기 전용 List처럼 보인다.

그러나, Tuple의 주된 용도는 여러 부분으로 구성된 단일 항목으로서 사용하는 것이다.

List는 고유한 항목들의 Collection으로 사용되며, 이때 모든 항목이 같은 타입인 경우가 많다.

record = ('GOOG', 100, 490.1)       
# 포트폴리오의 한 레코드를 나타내는 튜플

symbols = [ 'GOOG', 'AAPL', 'IBM' ]  
# 세 가지 주식 심벌을 나타내는 리스트

Dictionary

**Dictionary는 키(key)를 값(value)에 대응(mapping)**시킨다.

해시 테이블(hash table) 또는 연관 배열(associative array)이라고도 부른다.

키는 값에 접근하는 인덱스 역할을 한다.

s = {
    'name': 'GOOG',
    'shares': 100,
    'price': 490.1
}

공통적인 연산

Dictionary에서 값을 얻으려면 키 이름을 사용한다.

print(s['name'], s['shares'])
# GOOG 100
s['price']
# 490.10

값을 추가하거나 수정할 때 키 이름을 사용한다.

s['shares'] = 75
s['date'] = '6/6/2007'
>>> 'shares' = 75, 'date' = '6/6/2007'

값을 삭제하려면 del 문을 사용한다.

del s['date']
>>>

Dictionary를 사용하는 이유

Dictionary는 서로 다른 값이 많이 있고 그 값들을 수정 또는 조작해야 할 때 유용하다.

Dictionary를 사용하면 코드의 가독성이 높아진다.

s['price']
# vs
s[2]
profile
🚀 기록보단 길록을 ⭐

관심 있을 만한 포스트

0개의 댓글