본문 바로가기
Python

Python 자료형

by FraisGout 2020. 7. 2.

변수(variable)

변수(variable)란 데이터를 담아두는 그릇이라고 할 수 있습니다.

 

컴퓨터는 기본적으로 명령어를 처리하고 나면 결과를 따로 저장하고 있지 않습니다.

 

우리가 그 결과를 다시 사용하고 싶다면 변수라는 그릇에 따로 담아두어야 합니다.

 

변수의 선언

파이썬에서는 변수를 선언할 때 따로 자료형을 지정하지 않습니다.

 

기존의 C언어나 Java를 먼저 배운 사람이라면 헷갈릴 수도 있는 부분이지만 파이썬에서는 변수 선언 시 자료형을 따로 지정하지 않아도 오류를 발생시키지 않습니다.

 

 

 

하지만 '파이썬에는 자료형이 없다.'라는 말은 잘못된 말입니다.

 

파이썬에도 엄연히 자료형이 존재하며, 문법을 통해 강제하지 않을 뿐 자료형은 파이썬에서 여전히 중요합니다.

 

 

 

변수를 선언하는 방법은 변수의 이름만을 선언하면 됩니다.

 

매우 간단하기 때문에 다음 예제에서 확인하도록 합시다.

 

대입 연산자

파이썬에서 변수에 값을 저장하는 방법은 대입 연산자를 이용하는 것입니다.

 

대입 연산자(=)는 자신의 오른쪽에 있는 데이터를 왼쪽에 위치한 변수에 저장해줍니다.

 

수학에서 사용하는 등호(=)와는 다른 개념이므로 주의합니다.

 

 

 

만약 대입 연산자의 오른쪽에 특정 값이 아닌 수식 등의 연산이 필요한 문장이 등장하면, 해당 연산을 모두 처리한 후 그 결과값을 왼쪽에 저장해줍니다.

파이썬에서 '같다' 라는 표현은 등호를 두 개(==) 써서 표현합니다. 경우에 따라 'is' 키워드를 사용할 수도 있습니다.

 

다음 예제를 통해 변수와 대입문의 개념을 살펴봅시다.

 

)

print( 3 + 7 )

 

 

 

a = 1 + 5

 

print( a )

 

 

 

b = 1.5 + 4.2

 

print( b )

 

 

 

c = 0x16 + 0x08

 

print( c )

 

실행 결과

10

 

6

 

5.7

 

30

 

 

 

변수 a, b, c 에는 각각 오른쪽에 있는 수식의 결과값이 저장됩니다.

 

변수에 담아놨기 때문에 첫 번째 라인처럼 3+7과 같은 연산을 다시 하지 않아도 그 결과값을 다시 사용할 수 있습니다.

 

숫자형

3, 7, 1.5, 0x16 등은 숫자의 형태이며, 이러한 값들을 저장하는 변수를 숫자형 변수라고 부릅니다.

 

숫자형 변수는 크게 정수형과 실수형으로 나뉩니다.

 

 

 

숫자형 변수나 상수끼리의 연산은 우리가 이미 알고 있는 수학의 사칙연산과 같은 결과를 만들어냅니다.

 

)

print( 3 + 7 )

 

 

 

a = 1 + 5

 

print( a )

 

 

 

b = 1.5 + 4.2

 

print( b )

 

 

 

c = 0x16 + 0x08

 

print( c )

 

실행 결과

10

 

6

 

5.7

 

30

 

정수형은 우리가 평소에 쓰는 십진법 이외에도 8진법, 16진법 등을 포함합니다.

 

정수형

정수형이란 소수점이 없는 숫자형 데이터를 의미합니다.

 

정수형 데이터는 자연수와 음의 정수, 0을 모두 포함합니다.

 

이러한 데이터는 진법에 따라 다양하게 표현될 수 있습니다.

 

 

 

위의 예제에서 변수 a는 정수형 변수가 됩니다.

 

상수 15는 모두 정수형이므로, 그들을 더한 값도 정수형 데이터가 됩니다.

 

따라서 변수 a에는 정수형 데이터 6이 저장됩니다.

 

이와 같이 정수형끼리의 연산은 항상 정수형 결과물을 반환합니다.

 

실수형

실수형이란 소수점이 존재하는 숫자형 데이터를 의미합니다.

 

상수 1은 정수형 데이터이고 상수 1.1은 실수형 데이터입니다.

 

 

 

위의 예제에서 변수 b는 실수형 변수가 됩니다.

 

상수 1.54.2는 모두 실수형이므로, 이들을 더한 값도 실수형 데이터가 됩니다.

 

따라서 변수 b에는 실수형 데이터 5.7이 저장됩니다.

 

이와 같이 실수형끼리의 연산은 항상 실수형 결과물로 반환합니다.

 

실수형과 정수형 사이의 연산은 실수형 결과물을 반환합니다.

 

16진법

컴퓨터는 01만으로 데이터를 표현하므로, 프로그래밍을 하다 보면 이진법을 자주 사용하게 됩니다.

 

이진법은 작은 수를 표현하는데도 그 표기가 매우 길어지므로, 프로그래밍 세계에선 보통 16진법을 많이 사용합니다.

 

 

 

16진법은 한 자리가 0부터 15까지의 수를 저장할 수 있으며, 이 때 10 이상의 수는 영문자 a부터 f까지로 표현합니다.

 

16진법 표기임을 명시하기 위해서는 숫자 앞에 반드시 '0x'를 붙여줘야 합니다.

 

산술 연산자

파이썬에서는 사칙연산을 위한 산술 연산자로 더하기(+), 빼기(-), 곱하기(*), 나누기(/), 나머지(%) 연산자를 제공하고 있습니다.

 

또한 나눗셈의 몫을 알고 싶다면 // 연산자를 사용할 수 있으며, 제곱 연산을 하고 싶다면 ** 연산자를 사용할 수도 있습니다.

 

나누기 연산자(/)는 다른 프로그래밍 언어에서는 자료형에 따라 다른 결과를 반환합니다. ('' 또는 '')

하지만 파이썬에서는 일관되게 해당 나눗셈 연산에 대한 ''을 반환합니다.

 

문자열

프로그래밍에서 텍스트(string)는 보통 '문자열' 이라는 이름으로 불립니다.

 

글자 하나하나(문자)의 나열()이라는 의미입니다.

 

 

 

파이썬에서 문자열은 따옴표로 감싸져 있으며, 큰 따옴표("")나 작은 따옴표('') 둘 다 사용할 수 있습니다.

 

다만, 따옴표가 등장하는 순서에 따라 제대로 사용하지 않으면 문제가 발생할 수 있습니다.

 

 

 

다음 예제는 종류별 따옴표의 등장 순서가 잘못된 예제입니다.

 

)

"she said 'you will be fired" and this made me feel sad'

 

 

 

 

 

위의 예제는 작은 따옴표로 감싸진 문장이 큰 따옴표로 감싸진 문장 안에 정상적으로 포함되지 않고, 순서가 어긋났기 때문에 잘못된 문자열 표기입니다.

 

 

 

따라서 다음 예제와 같이 종류별 따옴표의 등장 순서를 정확하게 맞춰야 합니다.

 

)

"she said 'you will be fired' and this made me feel sad"

 

 

 

 

 

파이썬에서는 문자열은 다음과 같이 선언할 수도 있습니다.

 

예시

""" Python is very powerful"""

 

 

 

'''Python is

 

very powerful'''

 

 

 

 

 

위와 같은 문자열 선언 방식은 개행 문자까지 모두 문자열로 인식해주므로, 여러 줄의 문자열을 표기할 때 유용하게 사용할 수 있습니다.

 

문자열 연산

파이썬에서는 문자열끼리의 연산도 가능합니다.

 

대표적인 문자열 연산으로는 더하기(+)와 곱하기(*)가 있습니다.

 

)

a = "python"

 

b = "html"

 

c = "json"

 

 

 

print(a)

 

print(b + "is fun")

 

print(c * 3)

 

예시

python

 

html is fun

 

jsonjsonjson

 

 

 

위의 예제와 같이 문자열과 문자열 사이에 더하기 연산자(+)를 사용하면 두 문자열을 연결할 수 있습니다.

 

변수 b“html” 이라는 문자열을 가리키고 있으며, 더하기 연산자를 통해 문자열 “ is fun”이 뒤에 추가되어 결과적으로 “html is fun”이 출력되는 것을 확인할 수 있습니다.

 

 

 

문자열을 가리키는 변수나 문자열 자체에 정수를 곱해주면 곱해준 횟수만큼 해당 문자열이 반복하여 등장하게 됩니다.

 

따라서 세번째 print 문의 결과로 변수 c에 저장된 문자열 "json"이 세 번 반복되어 출력되는 것을 확인할 수 있습니다.

 

Boolean

파이썬 자료형에는 참(True)과 거짓(False)를 저장할 수 있는 Boolean이라는 자료형이 있습니다.

 

파이썬에서 참과 거짓의 구분 방법은 존재하면 참, 존재하지 않으면 거짓입니다.

 

논리 연산자

Boolean 값끼리의 연산을 담당하는 연산자를 논리 연산자라고 합니다.

다른 프로그래밍 언어에서는 and 연산자를 && 기호로, or 연산자를 || 기호로, not 연산자를 ! 기호로 대신 표현하기도 하지만 파이썬에서의 표현이 훨씬 직관적이라 알아보기 쉽습니다.

 

튜플(tuple)

앞에서 살펴본 자료형들은 하나의 변수에 딱 하나의 값만을 저장할 수 있습니다.

 

하지만 이번에 살펴볼 튜플, 딕셔너리, 리스트, 집합과 같은 자료형에는 여러 데이터를 동시에 저장할 수 있습니다.

 

 

 

튜플(tuple)은 그 중 제일 단순한 자료형으로, 소괄호((, ))로 데이터들을 감싸서 표현합니다.

 

튜플에는 0개 이상의 원소를 저장할 수 있습니다.

 

이때 각 원소의 자료형은 같지 않아도 되며, 다른 튜플까지도 포함할 수 있습니다.

 

 

 

대신 한 번 튜플이 생성되면 그 내부의 원소를 삭제하거나 수정할 수는 없습니다.

 

프로그램 실행 중 절대 변하지 않거나 변해서는 안되는 여러 값들이 있다면 튜플에 저장하여 사용하는 것이 좋습니다.

 

 

 

)

t1 = (1,"hello")

 

t2 = (3,4.22)

 

t3 = t1 + t2

 

t4 = t1 * 3

 

e = t3[1]

 

 

 

print(t1)

 

print(t2)

 

print(t3)

 

print(t4)

 

print(e)

 

실행결과

(1, 'hello')

 

(3, 4.22)

 

(1, 'hello', 3, 4.22)

 

(1, 'hello', 1, 'hello', 1, 'hello')

 

hello

 

 

 

위의 예제에서 변수 t1에는 1"hello"라는 서로 다른 자료형의 데이터가 저장되어 있습니다.

 

마찬가지로 변수 t2에는 정수형 데이터와 실수형 데이터가 함께 저장되어 있습니다.

 

 

 

변수 t3에는 변수 t1t2를 더한 값이 저장됩니다.

 

파이썬에서 튜플끼리의 더하기 연산(+)은 두 튜플을 원소로 가지는 새로운 튜플을 생성하는 것이 아니라 두 튜플의 원소만을 순서대로 가지는 새로운 튜플을 생성하여 반환합니다.

 

 

 

변수 t4에는 변수 t13을 곱한 값이 저장됩니다.

 

튜플과 정수의 곱하기 연산(*)은 해당 튜플의 원소를 정수만큼 반복하여 연결한 새로운 튜플을 생성하여 반환합니다.

 

 

 

튜플은 데이터들의 묶음이므로 원소에 저장된 실제 데이터에 접근하려면 대괄호([, ])를 사용해야 합니다.

 

이때 대괄호 사이에 사용되는 숫자를 인덱스(index)라고 하며, 이러한 인덱스는 0부터 시작하는 정수값으로 표현됩니다.

 

튜플의 첫 번째 원소는 인덱스가 0이 되며, 인덱스가 1이면 두 번째 원소에 저장된 값을 반환하게 됩니다.

 

따라서 위의 예제에서 변수 e에는 튜플의 두 번째 원소가 저장되어 "hello"가 출력되게 됩니다.

 

딕셔너리(dictionary)

파이썬에서 딕셔너리(dictionary)란 사전형 데이터를 의미하며, keyvalue11로 대응시킨 형태입니다.

 

이때 하나의 key에는 하나의 value만이 대응됩니다.

 

사전에서 단어를 찾으면 그에 대한 해설이 있는 것을 상상하면 쉽게 이해할 수 있습니다.

 

 

 

이 때, key 값은 절대로 변하지 않으며 value 값은 변경할 수 있습니다.

 

튜플과 다르게 key-value 쌍 자체를 수정하거나 삭제할 수 있기 때문에 유용하게 사용할 수 있습니다.

 

 

 

)

dic = {1 : "My" , 2:"Name", 3:"Is", 4:"Python"}

 

 

 

print(dic[1])

 

print(dic[2])

 

print(dic[3])

 

print(dic[4])

 

실행 결과

My

 

Name

 

Is

 

Python

 

 

 

위의 예제는 정수형 값을 key 값으로 하여 그에 대응하는 value 값으로 문자열을 저장한 형태입니다.

 

파이썬에서 딕셔너리의 key 값은 정수형을 포함한 어떠한 자료형도 가능합니다.

 

 

 

특정 key 값에 해당하는 value 값에 접근하려면, 딕셔너리명[key]의 형태로 사용합니다.

 

, 하나의 딕셔너리에 같은 key 값이 동시에 저장될 수는 없습니다.

 

딕셔너리 내부 함수

파이썬에서 딕셔너리는 유용하게 사용할 수 있는 특정 함수들을 기본적으로 포함하고 있습니다.

 

함수에 대해서는 4단원에서 자세히 다룰 예정이므로, 지금은 아래 예제와 같이 작성하면 어떤 결과를 얻을 수 있는지만 확인하도록 합니다.

 

)

dic = {1 : "My" , 2:"Name", 3:"Is", 4:"Python"}

 

 

 

print(dic.keys())

 

print(0 in dic.keys())

 

print(dic.values())

 

print(dic.items())

 

실행 결과

dict_keys([1, 2, 3, 4])

False

dict_values(['My', 'Name', 'Is', 'Python'])

dict_Items([(1, 'My'), (2, 'Name'), (3, 'Is'), (4, 'Python')])

 

 

 

keys() 함수는 해당 사전형 데이터에 저장된 key 값들을 리스트의 형태로 반환합니다.

 

해당 사전형 데이터에 무슨 key 값들이 포함되어 있는지 모를 때 유용하게 사용할 수 있습니다.

 

in 키워드를 사용하면 해당 리스트에 특정 값이 포함되어 있는지 여부를 알 수 있습니다.

 

해당 리스트의 특정 값이 존재할 경우에는 True를 반환하며, 존재하지 않을 경우에는 False를 반환합니다.

 

 

 

values() 함수는 해당 사전형 데이터에 저장된 모든 value 값들을 리스트의 형태로 반환합니다.

 

items() 함수는 해당 사전형 데이터에 저장된 모든 key-value 쌍을 리스트의 형태로 반환합니다.

 

리스트(list)

파이썬에서 리스트(list)란 원소들이 연속적으로 저장되는 형태의 자료형입니다.

 

이때 저장되는 요소들이 모두 같은 자료형일 필요는 없습니다.

 

 

 

리스트는 대괄호([, ])로 감싸서 나타내며, 안에는 0개 이상의 원소가 저장될 수 있습니다.

 

튜플과 마찬가지로 원소로 또 다른 리스트를 저장할 수도 있습니다.

 

 

 

)

myscores = [100,70,88,25]

 

yourscores = [55,46,100,98]

 

 

 

print(myscores)

 

print(yourscores)

 

실행 결과

[100, 70, 88, 25]

 

[55, 46, 100, 98]

 

 

 

위의 예제는 두 명이 받은 점수를 리스트의 형태로 저장하고 출력하는 코드입니다.

 

리스트 내부 함수

파이썬에서 리스트는 유용하게 사용할 수 있는 특정 함수들을 기본적으로 포함하고 있습니다.

 

함수에 대해서는 4단원에서 자세히 다룰 예정이므로, 지금은 아래 예제와 같이 작성하면 어떤 결과를 얻을 수 있는지만 확인하도록 합니다.

 

 

 

sort 함수는 해당 리스트에 저장된 원소들을 오름차순으로 정렬해줍니다.

 

숫자형끼리의 데이터나 문자열끼리의 데이터에서는 잘 작동하지만 여러 타입의 자료형이 함께 저장되어 있는 경우에는 제대로 동작하지 않을 수도 있습니다.

 

 

 

reverse 함수는 해당 리스트에 저장된 원소들의 순서를 정반대로 뒤집어줍니다.

 

append 함수는 해당 리스트의 맨 마지막 위치에 전달받은 데이터를 추가해줍니다.

 

 

 

)

myscores = [100,70,88,25]

 

yourscores = [55,46,100,98]

 

 

 

myscores.sort()

 

yourscores.reverse()

 

 

 

print(myscores)

 

print(yourscores)

 

 

 

del myscores[0]

 

myscores.append(45)

 

 

 

print(myscores)

 

실행 결과

[25, 70, 88, 100]

[98, 100, 46, 55]

 

[70, 88, 100, 45]

del 함수는 파이썬 내부 함수이며, 전달받은 변수를 삭제해줍니다.

 

리스트 내부의 리스트

리스트는 원소로 또 다른 리스트를 포함할 수 있습니다.

 

따라서 다음 예제와 같은 코드가 가능합니다.

 

)

myscores = [100,70,88,25]

 

yourscores = [55,46,100,98]

 

subjects = ["korean","math","english","computer"]

 

 

 

scores = [subjects, myscores, yourscores]

 

print(scores)

 

실행 결과

[['korean', 'math', 'english', 'computer'], [100, 70, 88, 25], [55, 46, 100, 98]]

 

 

 

위와 같이 또 다른 리스트를 원소로 가지는 리스트를 2차원 리스트 라고도 부릅니다.

 

이런 식으로 2차원 리스트뿐만 아니라 3차원, 4차원 리스트도 가능합니다.

 

집합(set)

파이썬에서 집합(set)이란 중복되는 원소가 없이, 순서에 상관없는 데이터들의 묶음입니다.

 

데이터의 중복을 허용하지 않기 때문에 중복되는 원소가 있다면 하나만을 저장합니다.

 

또한, 순서가 없기 때문에 리스트처럼 인데스 번호를 사용하여 특정 값에 접근할 수는 없습니다.

 

 

 

파이썬에서 집합은 리스트나 문자열을 사용하여 생성할 수 있습니다.

 

집합은 중괄호({, })로 감싸서 나타내며, set 함수를 사용하여 리스트나 문자열을 전달받아 생성할 수도 있습니다.

 

 

 

)

myscores = [100,70,88,25]

 

 

 

s1 = set(myscores)

 

print(s1)

 

 

 

s2 = {1, 2, 3}

 

s3 = {1, 3, 3}

 

print(s2, s3, s2-s3)

 

실행 결과

{88, 25, 100, 70}

 

{1, 2, 3} {1, 3} {2}

 

 

 

위의 예제에서 리스트인 변수 myscoresset 함수를 사용하여 집합으로 만들면, 중복 원소가 존재하지 않기 때문에 그대로 집합을 생성하여 반환합니다.

 

이때 집합은 순서가 없기 때문에 원래 리스트와는 그 순서가 일치하지 않을 수도 있습니다.

 

 

 

하지만 변수 s3에 저장되는 집합에는 3이라는 값이 중복되어 있므로, 변수 s3에는 실제로 {1,3}의 형태로 데이터가 저장됩니다.

파이썬에서는 교집합은 &연산자를 사용하여, 합집합은 | 연산자를 사용하여, 차집합은 연산자를 사용하여 표현할 수 있습니다. , 여집합을 표현하는 연산자는 별도로 존재하지 않습니다.

 

 

'Python' 카테고리의 다른 글

Python 객체지향 프로그래밍  (0) 2020.07.02
Python 함수  (0) 2020.07.02
Python 제어문  (0) 2020.07.02
Python 특징  (0) 2020.07.02

댓글