Data Types
이번 실습에서는 다음 내용들을 배운다.
- 프로그래밍 언어에서는 변수(Variable)에서 데이터를 저장/관리 하며 변수에 대한 개념을 통해 데이터를 사용할 수 있다.
- "변수" 라는 개념을 통해 데이터를 사용할 수 있다.
- data type을 배울 중요한 포인트는 어떤 연산을 사용할 수 있는지와 연산결과가 어떤 의미인지를 알아야한다."Hello" + "World" = ?
변수(Variable)이란?
- 변수는 메모리에 데이터를 저장하기 위한 공간을 가리키는 말이며, 컴퓨터와 프로그래밍 언어 사용자간의 약속이다.
- a : 컴퓨터와 사용자가 인식하는 특정 데이터를 저장하고 있는 공간이고, 공간의 이름을 a라고 한다.
- 변수는 일종의 닉네임으로, 실제 물리적인 메모리 주소공간을 가리킨다.
- 사용자는 변수의 이름으로 데이터를 인식하고, 컴퓨터는 변수의 주소로 데이터를 인식합니다.
- 변수에 데이터를 저장할 때는 =를 사용한다. 이 때 =를 assignment operator라고 부른다.
- a = 10 (a라는 공간에, 10이라는 데이터를 할당해주세요.)
(OPTIONAL) a = 10을 예로 들었을 때, =을 기준으로 왼쪽을 lvalue라고 하며 실제 메모리 주소를 의미하고, =을 기준으로 오른쪽을 rvalue고 하며 실제 데이터(또는 값)을 의미한다.
a = 10
# a라는 변수가 실제 메모리에서 저장되어 있는 위치.(메모리 주소)
id(a)
>>> 11256352
Q. 왜 data type은 여러가지 일까?
- 다음 질문에 대해 생각해보자.
Q1. 컴퓨터는 정수와 실수를 어떻게 인식할까? (어떻게 구분할까)
Q2. 100개의 숫자를 한꺼번에 다루고 싶을 때 어떻게 해야할까?
Q3. 컴퓨터는 문자를 어떻게 인식할까?
Q4. 많은 데이터를 빠르게 찾아야 할때는 어떻게 저장할까?
- 위 질문에 대한 대답을 data type을 배우면서 생각해보자
1. 숫자 데이터 (Numeric Data Types)
- 숫자형 데이터란, 정수/실수/복소수/2진수/8진수/16진수를 포함하며 가장 많이 사용하는 데이터 타입중에 하나다.
- 파이썬은 숫자의 표현 범위가 무한대이다.
- 숫자 데이터는 우리가 알고 있는 대부분의 연산을 그대로 지원한다. 사칙연산, 나머지 구하기, 몫 구하기, 거듭제곱 등
정수형 (Integer)
1+1
>>> 2
# a에 10, b에 5를 할당하고, a와 b를 더한 결과를 출력하자
a = 10
b = 5
a + b
>>> 15
a - b
>>> 5
type(a)
>>> int
int
실수형 (Floating point)
c = 3.14
c
>>> 3.14
c + 3.14
>>> 6.28
# d에 4를 할당하고 c에서 d를 뺀 값을 출력합니다.
d = 4
c - d
-0.8599999999999999
e = 1.34E6;
# 1.34 x 10^6을 의미한다.
e2 = 1.34e-3
# 1.34 X 10^(-3)을 의미한다.
e, e2
(1340000.0, 0.00134)
숫자형 데이터 타입이 제공하는 여러 연산자
사칙연산
# a에 10, b에 3을 할당하고 a와 b의 사칙연산 결과를 출력합니다. 이번에는 출력할때 print 함수를 사용합니다.
a = 10
b = 3
print(a + b)
print(a - b)
print(a * b)
print(a / b)
13
7
30
3.3333333333333335
# a에 10.3, b에 -1.6을 할당하고 사칙연산 결과를 출력합니다.
a = 10.3
b = -1.6
print(a + b)
print(a - b)
print(a * b)
print(a / b)
8.700000000000001
11.9
-16.48
-6.4375
특수연산
c = 5
d = 2
print(c ** d) # c를 d번 곱한 것. c^d
print(c // d) # c를 d로 나눈 몫.
print(c % d) # c를 d로 나눈 나머지.
25
2
1
Q. 어떤 연도를 N이라고 할 때, N이 윤년인지 아닌지 알아보는 방법은 무엇일까?
A. 윤년 규칙. N이 4의 배수이면서, 100의 배수가 아니거나 400의 배수면 윤년이다.
N % 4 == 0
N % 100 !== 0
N % 400 == 0
2. 문자열(String)
- 문자열 데이터란, 문자(character)의 나열을 의미한다. e.g. "Hello world"
- string ; Character Sequence
- 파이썬에 다룰 수 있는 문자열의 크기도 제한이 없다.
- 파이썬에선 ' 와 " 두 가지의 기호를 통해 문자열을 나타낸다. 즉 ' 부터 ' 까지 또는 " 부터 " 까지 하나의 문자열이다. e.g. 'Hello', "World"
- 컴퓨터는 문자(character)를 encoding하여 숫자로 표현한다. 알려진 예로 ASCII, utf-8, cp949가 있다.
- 컴퓨터는 문자를 숫자로 인식한다. e.g. ASCII 코드로 변환하면 A->65, a->97
- 현재 전세계적으로 웹에서 사용되는 국제 표준은 UTF-8(Universal code character set Transformation Format - 8-bit)이다.
(OPTIONAL) UTF-8에선 a는 1바이트로, '가'는 3바이트로 인식한다. 이를 가변 인코딩 방식이라고 하며, 영어보다 한글이 더 많은 데이터를 필요로 한다.
문자열을 만드는 여러가지 방법
# 멀티라인 스트링
s2 ="""To Be Great is
To Be Misunderstood.
- Ralph Waldo Emerson
"""
To Be Great is
To Be Misunderstood.
- Ralph Waldo Emerson
'To Be Great is\nTo Be Misunderstood.\n- Ralph Waldo Emerson\n'
i am a boy
she said, "go away"
특수 문자 표현 (escape code) 익히기
# \n -> new line
# \n -> new line
print("Hello\nWorld")
Hello
World
print("Hello\tWorld")
Hello World
문자열 연산하기
문자열의 사칙연산은 어떻게 정의될까? 숫자에선 당연했지만,
문자열의 더하기, 곱하기는 어떻게 정의되는지 잘 생각해보자.
s = "Hello"
s1 = "World"
# Q. 가운데 빈 칸을 넣고 싶을 땐 어떻게 해야할까?
s + ' ' + s1 # string concatination (문자열 붙이기)
s2 = "Hello"
s2 * 10
'HelloHelloHelloHelloHelloHelloHelloHelloHelloHello'
# 문자열의 길이를 출력하는 함수 len() 을 통해 s3의 문자 갯수(문자열 길이)를 알아보자.
s3 = "Enjoy your life."
len(s3)
16
문자열 Formatting
- 문자열을 출력할 때(print 함수를 이용하여) 특정 format을 지정하고 싶은 경우에는 어떻게 해야할까?
- e.g. OOO님의 주민등록번호는 XXXXXXX-XXXXXXX입니다.
- 문자열 포맷에는 크게 3가지가 있다. (기호에 맞게 사용하면 된다)
"사과는 4개있다."
1) print format 사용
print("%s는 %d개 있다." % ("사과", 4))
2) str.format 함수 사용
print("{}는 {}개 있다.".format("사과", 4))
3) f-string (**)
apple = "사과", count = 4
print(f"{apple}는 {count}개 있다.")
fruit = "사과"
count = 4
# 1) print formatting
print(" %s는 %d개 있다. " % (fruit, count))
사과는 4개 있다.
print("{}는 {}개 있다.".format(fruit, count))
사과는 4개 있다.
# 3) f-string
print(f"{fruit}는 {count}개 있다.")
사과는 4개 있다.
Q. 개인정보를 사용자로부터 입력받아, 주민등록등본을 출력해주는 키오스크(Kiosk)용 프로그램을 제작하려고 한다.입력받은 이름을 name이라는 변수에, 주민번호 앞자리를 id라는 변수에 입력받았다면,주민등록등본에 어떻게 출력해야 할까?
문자열 관련 함수들 (**)
(영어) 대소문자 바꾸기 upper(), lower()
s = "hi"
s.upper()
'HI'
s = "Hi"
s.lower()
'hi'
문자 공백 지우기 strip()
# 글자 주변 공백을 제거해줌, 중간은 삭제 안됨
s =" h i "
s.strip()
문자열 삽입 join()
"-".join("abcd")
'a-b-c-d'
문자열 나누기 split()
# 괄호안에 아무것도 안쓰면 공백을 기준으로 잘라줍니다.
s = "Life is too short."
s.split()
['Life', 'is', 'too', 'short.']
s = "Life is too short."
s.split("too")
['Life is ', ' short.']
문자열 바꾸기 replace()
# Life를 This pencil로 바꿔봅시다.
s = "Life is too short."
s.replace("Life", "this pencil")
'This pencil is too short.'
s = "Life is too short."
s.replace(" ", "")
3. 연속형 데이터 (Sequential Data Types)
Q. 숫자 100개를 한번에 다루려고 한다. <=> 하나의 변수에 숫자 100개를 저장하고 싶다. 어떻게 해야할까?
A. 연속형 데이터 타입을 사용하자!
- 연속형 데이터란, 하나의 변수가 하나의 데이터를 가지고 있던 숫자형 데이터와 달리, 여러개의 데이터를 하나의 변수에 가지고 있는 데이터 타입이다.
- 연속형 데이터 타입에는 리스트(List), 튜플(Tuple), 문자열(String)이 있다. (문자열을 문자들의 나열로 인식하기 때문에, 연속형 데이터이다.)
- 연속형 데이터의 크기 제한은 없다. 하지만, 사용하는 컴퓨터의 가용 메모리 용량을 인지하며 사용해야 한다.
- 각 연속형 데이터 타입마다 특징이 다르다. 그 특징을 파악하여 용도에 맞는 데이터 타입을 사용하는 것이 중요하다.
(OPTIONAL) 사전(dictionary) 타입은 associative array라고 불리며, 흔히 알고있는 Hash table 구조이다.
3.1 리스트(List)
- 가장 많이 사용되는 연속형 데이터 타입이자, 굉장히 유연한 구조를 가지고 있어 대부분의 데이터를 편하게 다룰 수 있다.
- 파이썬에서 [ 와 ]를 이용하여 표현한다. e.g. [1, 2, 3]
- 리스트의 원소는 쉼표로 구분되며, 리스트의 원소는 아무 데이터 타입이나 가능하다. 리스트조차 가능하다.
- 리스트를 이용하면 파이썬에서 다루는 대부분의 데이터는 아무 무리없이 다룰 수 있다. 하지만 수정이 자유롭기 때문에 수정을 하면 안되는 경우에는 사용하면 안된다.
리스트를 만드는 방법
# 정수 1, 2, 3을 원소로 가지는 리스트를 만듭니다.
L = [1, 2, 3]
L, type(L)
([1, 2, 3], list)
L1 = [] # empty list
type(L1)
list
L2 = list() # 빈 리스트를 만드는 같은 방법
type(L2)
list
L3 = [1, "Hi", 3.14, [1, 2, 3]] # 리스트에는 다양한 타입의 원소를 다 포함할 수 있다. 심지어 리스트도.
L3
[1, 'Hi', 3.14, [1, 2, 3]]
L4 = [[1, 2],
[3, 4]] # 2x2 행렬 표현처럼 사용할 수 있다. 이를 2차원 리스트라고 한다.
L4 # 실제로는 2개의 리스트를 원소로 가지는 리스트이다.
[[1, 2], [3, 4]]
Indexing (***)
- 연속형 데이터들은 하나의 변수에 여러가지 데이터를 가지기 때문에 여러 데이터를 접근하는 방법이 필요하다.
- 이를 위해 indexing이라는 기법이 있다. 말그대로 index를 통해 접근(access)하는 방법이다.
- 리스트의 index는 맨 앞부터 0으로 시작하며, 1씩 증가하는 정수 index를 사용한다.
e.g. [1, 2, 3]이면 첫번째 원소는 index가 0이고, 두번째 원소는 index가 1이다.
- 파이썬에서는 음수 index도 제공하는데, 이는 뒤쪽부터 접근할 수 있는 방법이다.
e.g. [1, 2, 3]이면 뒤에서 첫번째(맨 마지막)원소는 index가 -1이고, 뒤에서 두번째 원소는 index가 -2이다.
- index를 통해 접근하는 방법은 해당 변수이름에 []를 사용하며, []안에 index를 넣어서 접근할 수 있다.
e.g L = [1, 2, 3]이면 L[0]은 1이고, L[2]는 L[-1]이며 3이다.
L = [1, 2, 3, 4, 5]
L
[1, 2, 3, 4, 5]
# L의 첫번째 원소
L[0]
1
# L의 5번째 원소
L[4]
5
# L에 없는 index는?
L[9]
# L의 마지막 원소
L[-1] # -0은 없기 때문에 -1부터!
5
# indexing을 이용한 연산. L의 첫번째, 두번째 원소를 가져다가 더해봅니다.
L[0] + L[1]
3
L2 = [1, [2, 3], 5]
L2
[1, [2, 3], 5]
# L2에서 2에 접근하기 위해 indexing을 해보자.
L2[1][0]
2
Slicing (**)
슬라이싱은 리스트에서 뿐만 아니라, 리스트와 비슷한 구조인 numpy array와 pandas series, dataframe에서도 많이 이용되니 꼭 알아두어야 한다.
- 슬라이싱은 리스트의 일부분만 잘라낸다는 의미이다. (말그대로 슬라이싱)
- 리스트의 일부만 사용하고 싶을 때 쓰는 기법이며, indexing을 범위로 하는 느낌이다.
- 리스트의 index와 :를 사용하여 슬라이싱을 할 수 있다.
e.g. L = [1, 2, 3, 4] L[0:2]는 [1, 2]이다.
[1, 2, 3, 4, 5]
# L의 첫번째부터 index2 까지 자르기
L[0:2] # L[0] L[1]/// L[2]는 포함하지 않는다
[1, 2]
# L의 두번째부터 index4 까지 자르기
L[1:4]
[2, 3, 4]
# 시작 index를 생략하면, 자동으로 index는 0이 된다. (맨 처음)
L[:2]
[1, 2]
# 끝 index를 생략하면, 자동으로 index는(리스트의 길이)가 된다. (맨 마지막) Q. 왜 리스트의 길이일까?
L[2:] # L[2:100] = L[2:5] = L[2:len(L)]
[3, 4, 5]
TIP! 문자열도 연속형 데이터 타입이기 때문에, indexing과 slicing이 다 된다. 하나의 문자열을 생성하여 연습해보자.
리스트 연산하기
문자열때와 마찬가지로, 리스트도 더하기, 곱하기 연산이 존재한다. 어떤 의미일지 생각해보자.
리스트 더하기
L = [1, 2, 3]
L2 = [4, 5]
L + L2 # list concatenation
[1, 2, 3, 4, 5]
리스트 곱하기
L*3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
리스트 수정하기
L2[0] = 144
L[2] = 9
print(L[2])
L + L2 # 값이 바뀐게 적용이 됩니다.
9
[1, 2, 9, 144, 5]
리스트 관련 함수
리스트에 원소 추가하기 append() (***)
# 빈 리스트 L을 만들어서 3, 2, 1 순서대로 원소를 추가해봅니다.
L = [ ]
L.append(3)
L.append(2)
L.append(1)
L
[3, 2, 1]
리스트 원소 정렬하기 sort()
# sort()를 이용해 L을 정렬합니다. --오름차순 정렬
L = [4, 3, 16]
L.sort() # L.sort(reverse=True))를 쓰면, "내림차순" 정렬이 됩니다.
L
[3, 4, 16]
리스트 뒤집기(정렬 X) reverse()
#L.reverse() # reverse()와 같은 결과를 내는 신박한 방법도 있습니다.
L = [4, 3, 16]
L.reverse( ) ## L[::-1]도 동일하다
L
[16, 3, 4]
리스트에서 원소 제거하기 pop()
# apeend와 반대, 뒤에서 하나씩 제거한다.
L.pop()
4
3.2 튜플(Tuple)
- tuple은 list과 거의 같다.
- indexing, slicing 모두 동일하게 사용 가능하다. 원소들도 자유롭게 사용 가능하다.
- 거의 같은데, 다른 점이 딱 2가지 있다.
1) 리스트는 []를 사용하고, 튜플은 ()을 사용한다.
2) 리스트는 생성 후에 변경이 가능하고(mutable) 튜플은 생성 후에 변경이 불가능하다.(immutable)
Mutable : 생성된 이후에 변경(assignment)이 자유롭게 가능한 data type. e.g. List, dict, set
immutable : 생성된 이후에 변경이 불가능한 data type e.g. int, float, string, tuple, frozenset
성능적인 이슈 -> 변경되지는 않는 그 자체로 장점이 생김.
프로그래밍적인 이슈 -> 데이터 수정 자체를 하지 않는 경우 실수를 방지할 수 있다.
# 1, 2를 원소로 가지는 tuple을 생성해 봅니다.
t = ( 1 ,2 )
t, type(t)
((1, 2), tuple)
t1 = ()
t1, type(t1)
((), tuple)
t2 = ('a', 'b', ('a', 'b'))
t2
('a', 'b', ('a', 'b'))
t3 = ( 1, "a", (3, 3.14), ["seongeun", 2])
t3
(1, 'a', (3, 3.14), ['seongeun', 2])
t[0]
1
t[-1]
2
t[0] = 3 # 튜플의 원소를 변경해보자.
t
(1, 2)
# 그럼 tuple의 더하기, 곱하기는 어떻게 될까?
t = (1, 2)
t2 = (3, 4)
t + t2
(1, 2, 3, 4)
t2 * 3
(3, 4, 3, 4, 3, 4)
len(t * 3)
6
3.3 집합(Set)
- 집합 자료형은 정말 말그대로 수학에서 배우는 집합 그 자체이다.
- 수학에서는 집합을 {}로 표시했지만, 파이썬에서는 안타까운 이유로 {}를 사용하긴 하는데 그냥 사용할 수는 없다. 왜냐면 사전(Dictionary) 자료형도 {}를 사용하기 때문이다. 이에 대해서는 뒤에 자세히 배운다.
- 공집합을 생성할 때는 반드시 set()으로 생성해야 한다. {}로 생성하면 빈 사전이 생성된다.
e.g. {1, 2, 3} : 집합, {'a':1, 'b':2} : 사전
- 집합의 연산자인 교집합, 합집합, 차집합을 모두 지원한다.
- 집합의 특징이 2가지 있는데, 이 특징이 리스트와의 차이점이라 사용한다. 첫번째 특징이 집합 자료형을 사용하는 주된 이유이다.
1) 집합은 원소의 중복을 허용하지 않는다. 즉, 원소의 종류를 나타내기 좋다.
2) 집합은 원소의 순서가 존재하지 않는다. 즉, 원소의 index가 없다.
# 1, 2, 3을 원소로 가지는 집합을 만들어 봅시다.
s = {1, 2, 3}
s , type(s)
({1, 2, 3}, set)
s1 = {}
s1, type(s1)
({}, dict)
s1 = set() # 공집합 생성
s1, type(s1)
(set(), set)
s[1] # 2가 나올것 같지만...----> 인덱싱이 안된다! 집합은 순서가 존재하지 않는다!
집합의 연산
s1 = {1, 2, 3, 4, 5}
s2 = {3, 4, 5, 6, 7}
교집합
# s1과 s2의 교집합
s1 & s2 # 교집합의 연산기호 &
{3, 4, 5}
s1.intersection(s2) # s1과 s2의 자리를 바꿔서 당연히 같다.
s2.intersection(s1)
{3, 4, 5}
합집합
# s1과 s2의 합집합 기호 |
s1 | s2
{1, 2, 3, 4, 5, 6, 7}
s1 + s2 # 많이 혼동한다.
s1.union(s2)
s2.union(s2)
{3, 4, 5, 6, 7}
차집합
# s1과 s2의 차집합
s1-s2
{1, 2}
s2 - s1 # 당연히 다르다.
{6, 7}
집합의 원소의 uniqueness를 활용하는 경우.
# 리스트 L에 있는 서로 다른 원소의 개수는?
L = [ 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 6, 1, 1, 5]
set(L) # type conversion
{1, 2, 3, 4, 5, 6}
# 리스트 L에 있는 서로 다른 원소의 개수는?
L = [ 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 6, 1, 1, 5]
len(set(L)) # type conversion
6
집합 관련 함수
집합에 원소 하나 추가하기 add()
s = set()
s.add(1)
s
{1}
집합에 여러 원소 추가하기 update()
s = {1, 2, 3}
s.update({4, 5}) # sequence 가능 list, tuple 등
s
{1, 2, 3, 4, 5}
집합에서 원소 제거하기 remove()
s.remove(3)
s
{1, 2, 4, 5}
4. 사전(Dictionary) (**)
파이썬에서 리스트와 함께 굉장히 많이 사용되는 구조.
특히 이번 교육과정 중에 많이 사용되니 꼭 마스터하는 것을 추천한다.
- 파이썬에서 제공하는 사전 자료형은 key - value 방법을 통해 저장한다.
"John" | 0011 |
"Maria" | 1234 |
- 이런 table concept을 의미하며, 정수 index가 아닌 key값을 통해서 value를 access한다.
key-value 방식으로 저장을 하는 것으로 얻는 이점은?
A. 순서가 아닌 의미가 있는 값을 통해서 데이터 접근이 가능하다.
- 같은 말로 Hash Table이라고 불리며 데이터 관리에서 굉장히 중요한 개념이다.
- 파이썬에서 사전 자료형은 {}을 이용하여 표현하는데, 집합과의 차이점을 두기 위해 원소에 반드시 :가 들어가야 한다.
- 사전을 표현할 때는 {key : value, key2 : value2, ... } 형태로 표현한다.
e.g. {'a' : 1', "b" : 3}
사전을 만드는 방법
D = {"major":"business administraion","name" : "진성은" }
D
{'major': 'business administraion', 'name': '진성은'}
# 위에 나온 테이블 예시를 사전으로 만들어봅니다.
D = {"jhon": '0011' , "maria": '1234'}
D
{'jhon': '0011', 'maria': '1234'}
# 사전 D에 key가 'a'이고 value가 3인 원소를 추가하자.
# 만약에 indexing 하려는 key가 존재하지 않는 경우엔, assign을 하게 되면 key-value pair가 추가됩니다.
# 아닌 경우에는 assign 하게되면 valye가 업데이트 됩니다.
D['a'] = 5
D
{'a': 5, 'jhon': '0011', 'maria': '1234'}
D["a"] # key값이 이미 존재하는 경우에는 key값을 통한 indexing이 되며, key값이 존재하지 않을 때는 assignment를 사용하여 원소를 추가한다.
5
D2 = {'a' : 1 , 'a' : 2, 'b': 3} # 무엇이 문제일까? 'a' 키가 중복이 되었다!
D2 # key가 될수 있는 데이터 타입은 int, float, str, tuple
{'a': 2, 'b': 3}
TIP 사전을 만들 때 key는 중복이 있으면 절대 안된다.
사전에서 key가 될 수 있는 data type은 immutable이어야 한다.
사전 관련 함수
사전의 모든 key값들 보기 keys()
D = {'name': 'kim', 'phone': '01012345679', 'birth': '1234'}
D.keys()
dict_keys(['name', 'phone', 'birth'])
사전의 모든 value들 보기 values()
D.values()
dict_values(['kim', '01012345679', '1234'])
사전의 모든 key, value 쌍 보기 items()
D.items() # [] 쓰더라도 아래는 list 가 아니다!
dict_items([('name', 'kim'), ('phone', '01012345679'), ('birth', '1234')])
사전의 원소 가져오기 get()
# D['name']과 같다.
D.get("surname","Lee") # get 함수를 사용하면, defult값을 지정할 수 있다.
D.items()
dict_items([('name', 'kim'), ('phone', '01012345679'), ('birth', '1234')])
a['nokey']처럼 존재하지 않는 키(nokey)로 값을 가져오려고 할 경우 a['nokey']는 Key 오류를 발생시키고 a.get('nokey')는 None을 돌려준다는 차이가 있다. 어떤것을 사용할지는 여러분의 선택이다.
※ 여기에서 None은 "거짓"이라는 뜻이라고만 알아두자.
>>> a = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
>>> print(a.get('nokey'))
None
>>> print(a['nokey'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'nokey'
딕셔너리 안에 찾으려는 Key 값이 없을 경우 미리 정해 둔 디폴트 값을 대신 가져오게 하고 싶을 때에는 get(x, '디폴트 값')을 사용하면 편리하다.
>>> a.get('foo', 'bar')
'bar'
a 딕셔너리에는 'foo'에 해당하는 값이 없다. 따라서 디폴트 값인 'bar'를 돌려준다.
Sequence에 해당 데이터가 존재하는지 확인하기 : in operator
- in이라는 operator는 모든 연속형 데이터 타입에 사용할 수 있다.
- 사전의 경우에는 key값을 대상으로 하고, 리스트, 튜플, 집합, 문자열에 대해서는 해당 원소가 존재하는지 찾아서 True / False 를 알려준다.
"phone" in D
True
"major" in D
False
# 리스트, 튜플, 집합에서도 테스트
L = [1, 2, 3]
t = (1, 2, 3)
s = {1, 2, 3}
2 in L
True
'Python > Python Programming' 카테고리의 다른 글
Python_Basic_03 (0) | 2022.07.11 |
---|---|
Python_Basic_02 (0) | 2022.07.07 |
Python Basic 01. (0) | 2022.07.06 |
Part 03 Ch01 파이썬 프로그래밍- 03. Data Type(이론) (0) | 2022.07.05 |
Part 03 Ch01 파이썬 프로그래밍- 02. Python 소개 1 (0) | 2022.07.05 |