Login

Search

Learn 🇰🇷
2022.09.16 19:14

4.1 자료형

Views 60 Votes 0 Comment 0

여러분 이진수에 대해서 알고 계시지요? 컴퓨터에서는 이진수가 중요합니다. 왜냐하면 컴퓨터 내부에서는 모든 정보를 이진수로 처리하기 때문이죠. 예를 들어서 65라는 숫자를 컴퓨터 내부에서는 이진수 01000001로 처리합니다. 우리가 65 + 30 이라고 명령을 내리면 컴퓨터는 그것들을 모두 이진수로 바꿔서 계산을 한 다음에 그 결과를 다시 우리가 쓰는 십진수로 바꿔주는 거죠. 컴퓨터는 숫자 뿐만 아니라 문자라든지, 제 아무리 복잡한 정보도 모두 2진수로 처리한답니다.

컴퓨터에서 영어를 사용하기 위해서는 알파벳 한 자 한 자마다 숫자로 번호를 매겨서 처리를 하지요. 알파벳에 번호를 붙이는 규칙 중에서 널리 쓰이는 것으로 ASCII(아스키)라는 규약이 있습니다. 아스키에서는 알파벳 A를 숫자 65로 표현하는데요, 어차피 숫자 65는 다시 이진수로 바꿔서 처리하겠죠?

 

 

그렇다면 여기서 이상한 점이 생깁니다. 이진수 01000001이 있는데 컴퓨터는 이것이 숫자 65인지, 아니면 문자 A인지 어떻게 알 수 있을까요?

너무 어렵게 생각하실 건 없답니다.

숫자인지 문자인지 표시를 해주면 되는 거죠. 사람이 해주든지, 컴퓨터가 알아서 하든지 말입니다.

그렇게 표시를 해주는 것이 바로 자료형이라고 할 수 있습니다.

 

 

지금까지 우리가 자료형에 대해서 잘 몰라도 프로그램을 짤 수 있었던 것은 우리가 자료를 만들 때마다 파이썬에서 자동으로 자료형을 정해주었기 때문인데요, 다른 프로그래밍 언어에서는 프로그래머가 직접 정해주어야 하는 경우도 있습니다. 그리고 프로그래밍 언어마다 제공해주는 자료형에 차이가 있지요.

type() 함수를 사용하면 자료형을 쉽게 확인할 수 있습니다.

>>> filter(lambda x: x % 2, range(10))        # python 2
[1, 3, 5, 7, 9]  
>>> list(filter(lambda x: x % 2, range(10)))  # python 2 and 3
[1, 3, 5, 7, 9]

  

 

그렇다면 파이썬에는 어떤 자료형이 있는지 살펴볼까요?

파이썬의 자료형은 크게 숫자(numbers), 시퀀스(sequence), 매핑(mapping) 등으로 나눌 수 있습니다.

 

 

숫자

숫자를 나타내는 자료형으로는 정수(int), 부동소수점수(float), 복소수(complex)가 있습니다.

int

int는 정수(integer)를 나타냅니다.

>>> type(100000000)              # integer
<class 'int'>

   

 

정수가 너무 길어서 읽기 힘들면 밑줄을 넣어도 돼요.(파이썬 3.6 이상)

>>> 100_000_000  
100000000
>>> 1_0000_0000 
100000000

   

 

float

float는 원래 부동소수점수(floating-point number)를 가리키는데, 지금은 단순히 소수점 이하를 표현할 수 있는 수라고 생각하셔도 좋습니다.

>>> 100_000_000  
100000000
>>> 1_0000_0000 
100000000

  

 

쳅터 1에서 봤듯이, int끼리 연산한 결과가 float로 나오기도 해요.

>>> 5 / 3
1.6666666666666667

  

 

complex

그리고 복소수를 complex로 나타냅니다.

>>> type(3+4j)                   
<type 'complex'>

  

 

프로그래밍 언어에 복소수라는 자료형이 있는 것은 파이썬에서 처음 봤네요. 제곱하면 -1이 되는 수 i를 ‘허수(imaginary number)’라고 하죠.

i2=−1

파이썬에서는 허수 i를 j로 나타냅니다.

>>> (1j) ** 2
(-1+0j)

  

 

복소수의 거듭제곱 (1+i)10을 손으로 계산하는 과정은 이렇게 됩니다.

(1+i)2=1+2i+i2=2i(1+i)10={(1+i)2}5=(2i)5=25⋅i5=32(i2)2i=32i

파이썬에서는 이렇게 할 수 있어요.

>>> (1 + 1j) ** 10
32j

  

 

 

시퀀스

문자열(str), 리스트(list), 튜플(tuple), 사용자 정의 클래스가 시퀀스에 속합니다.

>>> type("Love your Enemies, for they tell you your Faults.")
<class 'str'>
>>> type(['love', 'enemy', 'fault'])
<class 'list'>
>>> type(('love', 'enemy', 'fault'))
<class 'tuple'>

  

 

for 문에서 사용할 수 있는 것들이 바로 시퀀스입니다.

문자열이 시퀀스에 속하네요. 여러 개의 문자를 한 줄로 세워뒀으니 그럴 법도 하겠죠?

튜플과 사용자 정의 클래스에 대해서는 뒤에서 설명드리지요.

 

 

매핑

딕셔너리(dict)는 키(key)와 값(value)의 짝으로 이뤄집니다. 이런 것을 매핑이라고 합니다.

>>> type({'one': 1, 'two': 2, 'three': 3})
<class 'dict'>

  

 

 

 

참, 거짓을 표현하는 불(bool)도 있습니다.

>>> type(False)
<class 'bool'>
>>> type(3 >= 1)
<class 'bool'>
>>> type(True == 'True')
<class 'bool'>

  

 

 

 

세트

집합을 표현하는 세트(set)도 있습니다.

>>> fruits = {'apple', 'banana', 'orange'}


   

세트는 원소의 순서가 유지되지 않고 중복 원소를 갖지 않는 ‘집합’으로서의 특징이 있으며, 집합 연산을 사용할 수 있습니다.


List of Articles
No. Subject Author Date Views
Notice Learn What is Python? admin 2024.10.19 81
44 Learn 🇰🇷 1.1 파이썬 맛보기 admin 2022.08.10 79
43 Learn 🇰🇷 1.2 변수 admin 2022.08.13 77
42 Learn 🇰🇷 1.3 리스트 admin 2022.08.13 63
41 Learn 🇰🇷 1.4 인터프리터와 컴파일러 admin 2022.08.19 71
40 Learn 🇰🇷 2.1 while을 사용하는 반복문 admin 2022.08.23 57
39 Learn 🇰🇷 2.2 조건문 (if-elif-else) admin 2022.08.23 63
38 Learn 🇰🇷 2.3 for를 사용하는 반복문 admin 2022.08.24 55
37 Learn 🇰🇷 3.1 함수 admin 2022.09.01 71
36 Learn 🇰🇷 3.2 반환(return)문 admin 2022.09.10 61
35 Learn 🇰🇷 3.3 지역변수, 전역변수 admin 2022.09.15 63
34 Learn 🇰🇷 3.4 람다(lambda) admin 2022.09.16 60
» Learn 🇰🇷 4.1 자료형 admin 2022.09.16 60
32 Learn 🇰🇷 4.2 문자열과 리스트 admin 2022.09.16 58
31 Learn 🇰🇷 4.3 튜플(tuple) admin 2022.09.21 61
30 Learn 🇰🇷 4.4 딕셔너리(dict) admin 2022.09.30 61
29 Learn 🇰🇷 4.5 세트(set) admin 2022.10.02 58
28 Learn 🇰🇷 5.1 모듈이란 admin 2022.10.03 58
27 Learn 🇰🇷 5.2 모듈 가져오기(import) admin 2022.10.07 55
26 Learn 🇰🇷 5.3 여러 가지 모듈 admin 2022.10.15 56
25 Learn 🇰🇷 6.1 텍스트 파일 admin 2022.10.21 58
Board Pagination Prev 1 2 3 Next
/ 3