type( ) : 값의 자료형 확인하기
변수에 담긴 값들이 어떤 자료형인지 알 수 있음.
integer = 10
float_ = 1.23
string = "hello world!!"
list_ = [1, 2, 3]
tuple_ = (1, 2, 3)
set_ = {1, 2, 3}
dictionary = {"key": "value"}
boolean = True
print(type(integer)) # <class 'int'>
print(type(float_)) # <class 'float'>
print(type(string)) # <class 'str'>
print(type(list_)) # <class 'list'>
print(type(tuple_)) # <class 'tuple'>
print(type(set_)) # <class 'set'>
print(type(dictionary)) # <class 'dict'>
print(type(boolean)) # <class 'bool'>
특히, 결과값으로 받아온 숫자가 어떤 형태인지(정수형인지 문자형인지) 확인할 때 유용함
a = 1
b = "1"
print(a, type(a)) # 1 <class 'int'>
print(b, type(b)) # 1 <class 'str'>
split( ) : string을 list로 변환하기
특정 문자를 기준으로 문자열을 쪼갤 수 있음.
# split은 string.split("구분자")로 구성되어 있습니다.
string = "hello/python/world!!"
string_list = string.split("/") # split() 안에 들어간 값을 기준으로 문자를 나눈다.
print(string_list) # ['hello', 'python', 'world!!']
join( ) : list를 string으로 변환하기
split 과 반대로 특정 문자를 기준으로 문자열을 연결해줌.
# join은 "사이에 들어갈 문자".join(리스트) 로 구성되어 있습니다.
string_list = ["hello", "python", "world"]
string = "!! ".join(string_list)
print(string) # hello!! python!! world
replace( ) : 문자열 바꾸기
특정 문자를 내가 원하는 문자로 바꿔줌.
# replace는 "변경할 문자".replace("변경 전 문자", "변경 후 문자")로 구성되어 있습니다.
before_string = "hello world!!!"
after_string = before_string.replace("!", "~") # !를 ~로 변경
print(after_string) # hello world~~~
pprint( ) : 코드 예쁘게 출력하기
pprint는 pretty print의 약자이고, 데이터를 더 예쁘게 출력해줌.
예시
# 예시
sample_data = {
"id": "0001",
"type": "donut",
"name": "Cake",
"ppu": 0.55,
"batters":
{
"batter":
[
{"id": "1001", "type": "Regular"},
{"id": "1002", "type": "Chocolate"},
{"id": "1003", "type": "Blueberry"},
{"id": "1004", "type": "Devil's Food"}
]
},
"topping":
[
{"id": "5001", "type": "None"},
{"id": "5002", "type": "Glazed"},
{"id": "5005", "type": "Sugar"},
{"id": "5007", "type": "Powdered Sugar"},
{"id": "5006", "type": "Chocolate with Sprinkles"},
{"id": "5003", "type": "Chocolate"},
{"id": "5004", "type": "Maple"}
]
}
예시 출력 비교
일반 print 출력일 경우
print(sample_data)
{'id': '0001', 'type': 'donut', 'name': 'Cake', 'ppu': 0.55, 'batters': {'batter': [{'id': '1001', 'type': 'Regular'}, {'id': '1002', 'type': 'Chocolate'}, {'id': '1003', 'type': 'Blueberry'}, {'id': '1004', 'type': "Devil's Food"}]}, 'topping': [{'id': '5001', 'type': 'None'}, {'id': '5002', 'type': 'Glazed'}, {'id': '5005', 'type': 'Sugar'}, {'id': '5007', 'type': 'Powdered Sugar'}, {'id': '5006', 'type': 'Chocolate with Sprinkles'}, {'id': '5003', 'type': 'Chocolate'}, {'id': '5004', 'type': 'Maple'}]}print(sample_data)
pprint 출력일 경우
(모듈 import 해줘야함)
from pprint import pprint
pprint(sample_data)
{'batters': {'batter': [{'id': '1001', 'type': 'Regular'},
{'id': '1002', 'type': 'Chocolate'},
{'id': '1003', 'type': 'Blueberry'},
{'id': '1004', 'type': "Devil's Food"}]},
'id': '0001',
'name': 'Cake',
'ppu': 0.55,
'topping': [{'id': '5001', 'type': 'None'},
{'id': '5002', 'type': 'Glazed'},
{'id': '5005', 'type': 'Sugar'},
{'id': '5007', 'type': 'Powdered Sugar'},
{'id': '5006', 'type': 'Chocolate with Sprinkles'},
{'id': '5003', 'type': 'Chocolate'},
{'id': '5004', 'type': 'Maple'}],
'type': 'donut'}
결과를 보면
딕셔너리, 리스트의 구분이 뚜렷하고 데이터마다 개행도 시켜주고 인덴트도 맞춰서 출력해준다.
변수에 많은 양의 데이터가 담겨있을 때 내용을 깔끔하게 보고싶으면 사용함
random : 랜덤한 로직 만들기
이름처럼 임의의 숫자를 생성하거나 무작위의 동작이 필요할 때 사용한다
코드를 실행할 때마다 결과값이 달라진다.
shuffle (리스트 안의 요소를 섞기)
randint (random integer 의 약자, 무작위 숫자라는 뜻)
# 난수 생성, 임의의 번호 생성 등 랜덤한 동작이 필요할 때 사용
import random
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
random.shuffle(numbers) # numbers를 무작위하게 섞기
print(numbers) # [2, 8, 6, 4, 3, 7, 1, 5]
random_number = random.randint(1, 10) # 1 ~ 10 사이의 무작위 번호 생성
print(random_number) # 4
time : 시간 다루기
코드의 실행속도를 측정하거나, 코드를 잠시 중지시킬 때 사용
import time
start_time = time.time() # 현재 시간 저장
time.sleep(1) # 1초간 대기
end_time = time.time()
# 코드가 종료된 시간 - 코드가 시작된 시간으로 실행 시간 구하기 (단위 : 초)
print(f"코드 실행 시간 : {end_time-start_time:.5f}") # 코드 실행 시간 : 1.00018
.5f 는 소수점 5째 자리 수까지 표기하겠다는 뜻임.
datetime : 날짜 다루기
현재 날짜 및 시각 출력해보기
from datetime import datetime
print(datetime.now()) # 2023-02-22 15:55:32.277095
datetime은 string 이 아니라 datetime 클래스임.
print(datetime.now()) # 2024-11-19 06:39:03.326788
now = datetime.now()
now = now.split(" ") # 공백 기준으로 나누기 시도
# AttributeError: 'datetime.datetime' object has no attribute 'split'
# 에러 발생 이유
print(type(now)) # <class 'datetime.datetime'>
datetime 을 string 으로 변경하는 법
now = str(datetime.now()) # 문자열로 형변환 해주기
print(now.split(" ")) # ['2024-11-19', '06:44:59.605220']
strptime(입력받을 날짜 변수, 변경할 문자열의 포맷)
# datetime 날짜를 string으로 변환하기
now = datetime.now()
string_datetime = datetime.strftime(now, "%y/%m/%d %H:%M:%S")
print(string_datetime) # 22/09/04 04:04
반대로 string 을 datetime 으로 변경하는 법
strptime(입력받을 문자열 변수, 입력받은 문자열의 포맷)
# string을 datetime 날짜로 변경하기
string_datetime = "23/12/25 13:20"
datetime_ = datetime.strptime(string_datetime, "%y/%m/%d %H:%M")
print(datetime_) # 2023-12-25 13:20:00
포맷 종류
'''
%y : 두 자리 연도 / 20, 21, 22
%Y : 네 자리 연도 / 2020, 2021, 2022
%m : 두 자리 월 / 01, 02 ... 11 ,12
%d : 두 자리 일 / 01, 02 ... 30, 31
%I : 12시간제 시간 / 01, 02 ... 12
%H : 24시간제의 시간 / 00, 01 ... 23
%M : 두 자리 분 / 00, 01 ... 58, 59
%S : 두 자리 초 / 00, 01 ... 58, 59
'''
datetime의 format code 더 제세한건 여기서 확인 가능
https://docs.python.org/ko/3/library/datetime.html#strftime-and-strptime-format-codes
timedelta
특정 날짜를 더하거나 뺄 때 사용함
사용하는 방법은 사칙연산이랑 비슷함
from datetime import timedelta
# 3일 전 날짜 구하기
three_days_ago = datetime.now() - timedelta(days=3)
print(three_days_ago) # 2023-02-19 16:27:52.526502