본문 바로가기

내가 만드는 개발자 교안/Python

02. 02 파이썬 기초 02 - 데이터 타입 (Data Types)

728x90

 

Data Types

개요

변수의 종류

그 변수에 사용하는 연산과 동작 등을 결정하는 속성

데이터 타입 분류

  • Numeric Data : int, float, complex
  • Text Sequence : str
  • Sequence : list, tuple, range
  • Non-Sequence : set, dict
  • Boolean, None, Function, .....

데이터 타입을 공부해야 하는 이유

  • 변수에 저장된 데이터 타입을 어떻게 처리해야 하는지 구분할 수 있음
  • 데이터 타입을 통한 유효성 검사를 할 수 있음
  • 명확한 타입을 통한 가독성 및 유지보수성을 향상시킬 수 있음
  • 특정 연산에 최적화된 특정 데이터 타입들을 공부하고, 성능을 최적화 할 수 있음

Numeric Data

1. int : 정수 자료형

숫자를 그냥 할당하면 정수형이 된다.

data01 = 1
data02 = 5
data03 = 10
print(data01)   # 1
print(data02)   # 5
print(data03)   # 10
    

변수를 type()으로 감싸면 type을 확인할 수 있다.

print(type(data01)) # <class 'int'>
print(type(data02)) # <class 'int'>
print(type(data03)) # <class 'int'>
    

정수를 여러 진수로 표현할 수 있다.

  • 2진수(binary) : 0b
  • 8진수(octal) : 0o
  • 16진수(hexadecimal) : 0x
print(0b11) # 3
print(0o32) # 26
print(0x2e) # 46
    

2. float : 실수 자료형

  • 유한 정밀도 : float은 메모리에 저장할 수 있는 값으로 저장하기 때문에 근사값을 저장한다.
  • 4/3 - 1 과 1/3 이 동일하지 않다.
print(14/13)    # 1.0769230769230769
print(1/13)     # 0.07692307692307693
print(14/13 - 1 == 1/13)   # False
print(2/5)  # 0.4
    

지수 표현

a = 1000    
b = 1e3
print(a)    # 1000
print(b)    # 1000.0
print(a == b)   # True
print(type(a), type(b)) # <class 'int'> <class 'float'>
    

Sequence Types

특징

  • 순서 : 데이터가 삽입된 순서가 유지된다.
  • 인덱싱 : 각 요소는 0부터 시작하는 고유한 인덱스를 가진다.
  • 슬라이싱 : 시퀀스의 부분을 잘라내어 새로운 시퀀스를 만들 수 있다.
  • 길이 : len() 함수를 사용하여 시퀀스의 길이를 알 수 있다.
  • 반복 : for 루프를 사용하여 시퀀스의 각 요소를 반복할 수 있다.

1. 문자열 (str)

  • 문자들의 시퀀스로 이루어진 데이터 타입
  • 불변(immutable) : 문자열의 각 문자는 변경할 수 없다.
string = "Hello, World!"
print(string[0])   # 'H'
print(string[-1])  # '!'
print(string[7:12]) # 'World'
print(len(string)) # 13
for char in string:
    print(char)
    

2. 리스트 (list)

  • 다양한 데이터 타입의 요소를 포함할 수 있는 가변(mutable) 시퀀스
  • 대괄호([])를 사용하여 생성
my_list = [1, "two", 3.0, [4, 5]]
print(my_list[1])  # 'two'
print(my_list[-1]) # [4, 5]
print(my_list[1:3]) # ["two", 3.0]
print(len(my_list)) # 4
for item in my_list:
    print(item)
my_list[1] = 2
print(my_list) # [1, 2, 3.0, [4, 5]]
    

3. 튜플 (tuple)

  • 불변(immutable) 시퀀스
  • 소괄호(())를 사용하여 생성
my_tuple = (1, "two", 3.0)
print(my_tuple[1])  # 'two'
print(my_tuple[-1]) # 3.0
print(my_tuple[1:3]) # ("two", 3.0)
print(len(my_tuple)) # 3
for item in my_tuple:
    print(item)
    

4. range

  • 정수 시퀀스를 생성하는 타입
  • 주로 for 루프에서 반복 횟수를 제어하기 위해 사용
for i in range(5):
    print(i)  # 0, 1, 2, 3, 4
print(list(range(2, 10, 2))) # [2, 4, 6, 8]
    

Non-Sequence Types

1. 딕셔너리 (dict)

  • 키-값 쌍의 모음
  • 중괄호({})를 사용하여 생성
  • 키는 불변 타입만 가능하고, 값은 모든 타입이 가능
my_dict = {"name": "Alice", "age": 25, "location": "Wonderland"}
print(my_dict["name"]) # 'Alice'
print(my_dict["age"]) # 25
my_dict["age"] = 26
print(my_dict) # {"name": "Alice", "age": 26, "location": "Wonderland"}
for key, value in my_dict.items():
    print(key, value)
    

2. 세트 (set)

  • 중복되지 않는 요소들의 모음
  • 중괄호({})를 사용하여 생성, 순서가 없음
my_set = {1, 2, 3, 4, 4, 5}
print(my_set) # {1, 2, 3, 4, 5}
my_set.add(6)
print(my_set) # {1, 2, 3, 4, 5, 6}
my_set.remove(2)
print(my_set) # {1, 3, 4, 5, 6}
for item in my_set:
    print(item)
    

Other Types

1. Boolean (bool)

  • True 또는 False 값을 가짐
a = True
b = False
print(a) # True
print(b) # False
print(type(a)) # <class 'bool'>
print(a and b) # False
print(a or b) # True
print(not a) # False
    

2. None

  • 값이 없음을 나타내는 타입
n = None
print(n) # None
print(type(n)) # <class 'NoneType'>
    

3. Function

  • 코드를 캡슐화하여 재사용 가능한 블록으로 만드는 타입
def greet(name):
    return f"Hello, {name}!"

print(greet("Alice")) # "Hello, Alice!"
print(type(greet)) # <class 'function'>
    
반응형