Python 기본문법 - 자료형(Data Type)

Leezi·2022년 11월 11일
0

python

목록 보기
4/9

자료형(Data Type)

자료형이란? 프로그래밍 언어에서 사용할 수 있는 데이터의 종류를 의미한다.
데이터의 종류에 따라 확보해야되는 메모리의 크기가 다르기 때문에. 그 값의 종류를 식별하여 자료형에 대한 가능한 값, 해당 자료형에서 수행을 마칠 수 있는 명령들, 데이터의 의미, 해당 자료형의 값을 저장하는 방식을 결정한다.


Number 숫자형

숫자형 자료형은 따옴표 없이 숫자로만 입력된 형태의 데이터.
정수, 실수 다양한 형태의 숫자를 쓸 수 있고, 숫자형간의 사칙연산이 가능하다.

num = 숫자
num = Int("정수 숫자");
num = float("실수 숫자");
a = 7
b = 2

a+b   # 9 
a-b   # 5
a*b   # 14
a/b   # 3.5
a//b   # 3 (몫)
a%b   # 1 (나머지)
a**b  # 49 (거듭제곱)

a+3*b         # 13 (여러 연산을 한 줄에 할 경우 사칙연산의 순서대로!)
(a+3)*b       # 20 (소괄호를 이용해서 먼저 계산할 부분을 표시해줄 수 있어요!)


Boolean 불린형

불린형 자료형은 ture(참) 또는 false(거짓)의 논리형태의 데이터.
기본적으로 0, 빈문자(" "), None을 제외한 모든 값에 대해서 true를 반환한다.

변수 = True or False # 소문자로 쓰면 자료형으로 인식하지 않고 변수명이라 생각해 에러가 납니다~
변수 = Bool(표현식);


String 문자열

문자열은 문자나 숫자를 "" 또는 ''로 감싸고 있는 형태의 데이터.

변수 = "문자열 숫자나 문자";
a = 1 # 따옴표로 감싸지 않으면 문자열이 아닌 숫자!
b = "a"
c = a  # 따옴표로 감싸지 않으면 변수이름을 뜻하기 때문에 꼭 구분해서 써야합니다!
print(a, b, c) # 1 "a" 1

문자열 연산

문자열 간의 더하기는 두 문자열을 이어붙인 문자열을 반환한다. 이때 문자열과 다른 자료형은 더할 수 없다.

first_name = "Harry"
last_name = "Potter"

first_name + last_name  # HarryPotter
first_name + " " + last_name  # Harry Potter

a = "3"
b = 5

a+b # Error!

문자열에서 자주 쓰이는 내장함수, 메소드

내장 함수는 모듈이나 패키지를 가져오지 않고 바로 사용할 수 있는 함수를 의미
메소드는 객체 내의 함수를 의미하는데 여기서는 특정 자료형에서 사용할수 있는 함수로 이해하면 된다. 자료형 뒤에 '.' 을 붙이고 쓰면 된다.

len() : 문자열의 길이를 반환하는 내장함수

print(len("Hello, Sparta!"))  # 14
print(len("안녕하세요."))      # 6

.upper() / .lower() : 문자열 내의 모든 알파벳을 대문자/소문자로 바꾸는 메소드

sentence = 'Python is FUN!'

sentence.upper()  # PYTHON IS FUN!
sentence.lower()  # python is fun!

.split("특정문자") : 특정 문자를 기준으로 문자열을 나누는 메소드

# 이메일 주소에서 도메인 'gmail'만 추출하기
myemail = 'test@gmail.com'

result = myemail.split('@') # ['test','gmail.com'] (뒤에 배울 '리스트'라는 자료형이에요 :))

result[0] # test (리스트의 첫번째 요소)
result[1] # gmail.com (리스트의 두 번째 요소

result2 = result[1].split('.') # ['gmail','com']

result2[0] # gmail -> 우리가 알고 싶었던 것
result2[1] # com

# 한 줄로 한 번에!
myemail.split('@')[1].split('.')[0]

.replace("변경전문자","변경후문자") : 특정 문자를 다른 문자로 바꾸는 메소드

txt = '서울시-마포구-망원동'
print(txt.replace('-', '>')) # '서울시>마포구>망원동'

문자열 형식화(string formatting)

파이썬에서는 복잡한 문자열을 만들때 원하는 위치에 특정한 값(변수)를 삽입해서 문자열을 그때그때 이쁘게 출력할 수 있도록 지원해준다.

% 서식문자

문자열의 어느 위치에 값이 들어가는지를 표시하기 위해 문자열 안에 % 기호로 시작하는 형식지정 문자열(format specification string)을 붙이고 그 뒤에 다른 값을 붙이면 뒤에 붙은 값이 문자열 안으로 들어간다.

문자설명
%s문자열
%d정수
%f부동소수점 실수
print("내 이름은 %s입니다." % "홍길동") # 내 이름은 홍길동입니다.
print("나는 %d살 입니다." % 12") # 나는 12살 입니다.
print("원주율의 값은 %f입니다." % 3.141592) # 원주율의 값은 3.141592입니다.

.format() 메소드

.format() 메서드는 % 기호로 시작하는 형식지정 문자열 대신 {} 기호를 사용한다. 또한 자료형을 표시할 필요가 없다. 문자열 내에서 { 문자를 출력하고 싶을 때는 {{라는 글자를 사용한다.

{} 안에 값의 순서를 지정하는 숫자나 인자를 넣을 수도 있다. 가장 앞에 있는 값은 {0}, 그 뒤의 값은 {1}, 이런 식으로 지정한다. 이 방법을 사용하면 값의 순서를 바꾸거나 같은 값을 여러번 인쇄할 수도 있다.

print("내 이름은 {}입니다.".format("홍길동")) # 내 이름은 홍길동입니다.
print("내 이름은 {{{}}}입니다.".format("홍길동")) # 내 이름은 {홍길동}입니다.

"{2}의 {0} 점수는 {1}점입니다. {1}점! {1}점!".format("수학", 100, "철수") # 숫자지정
"{a}점수: {x}점, {b}점수: {y}점".format(a="영어", b="수학", x=100, y=90) # 인자지정

f-string

f-string은 문자열의 앞에 f 글자를 붙인 문자열이다. f 문자열에서는 {} 안에 변수의 이름을 바로 사용할 수 있다.

s = {'name':'영수','score':70}
name = s['name']
score = str(s['score'])
print(f'{name}{score}점입니다')


List 리스트

리스트는 관련 있는 데이터를 하나의 변수에 할당하여 관리하기 위한 데이터 타입으로 [ ]로 감싸서 나타내고, 이런 요소들을 쉼표로 구분하며, 안에 어떤 데이터 타입이든 다 들어갈 수 있다.
리스트안에 리스트가 들어갈 수도 있고, 딕셔너리가 들어갈 수도 있다.

변수명 = [value1,value2,value3]
a = [1, 3, 2, 4]
b = [3, "a", 6, 1]
c = []
d = list()
e = [1, 2, 4, [2, 3, 4]]


# 인덱싱
print(a[3])  # 4

# 슬라이싱
print(a[1:]) # [3, 2, 4]
print(a[:3]) # [1, 3, 2]
print(a[1:3]) # [3, 2]
print(a[-1]) # 4 (맨 마지막 것)

print(a[::-1]) # 역순 [4,2,3,1]
print(a[::-2]) # 역순 [4,3]

리스트 에서 자주 쓰이는 내장함수, 메소드

len() : 리스트의 길이를 반환하는 내장함수

a = [1, 5, 2]
print(len(a))   # 3

.append() :리스트 끝에 값을 덭붙이는 메소드

a = [1, 2, 3]
a.append(5)  # [1, 2, 3, 5]

.sort() : 리스트 값을 정렬하는 메소드

a = [2, 5, 3]

a.sort() # 오름차순 [2, 3, 5]
a.sort(reverse=True) #내림차순 [5, 3, 2]

값 in 리스트 : 요소가 리스트 안에 있는지 Boolean으로 값을 반환하는 연산자

a = [2, 1, 4, "2", 6]
print(1 in a)      # True
print("1" in a)    # False
print(0 not in a)  # True


Dictionary 딕셔너리

딕셔너리는 키(key)와 밸류(value)의 쌍으로 이루어진 데이터타입으로 {}로 감싸서 나타내고, 이런 요소들을 쉼표로 구분하며, 안에 어떤 데이터 타입이든 다 들어갈 수 있다.
딕셔너리안에 리스트가 들어갈 수도 있고, 딕셔너리가 들어갈 수도 있다.

다만 딕셔너리의 요소에는 순서가 없기 때문에 인덱싱은 할 수 없다.

{ Key1:Value1, 
  Key2:Value2, 
  Key3:Value3, ...}

# 빈 딕셔너리 만들기
a = {}
a = dict()
person = {"name":"Bob", "age": 21}

person["name"] = "Robert"
print(person)  # {'name': 'Robert', 'age': 21}

print(person[1]) # 0이라는 key가 없으므로 KeyError 발생! 인덱싱 불가.

person = {"name":"Alice", "age": 16, "scores": {"math": 81, "science": 92, "Korean": 84}}
print(person["scores"])             # {'math': 81, 'science': 92, 'Korean': 84}
print(person["scores"]["science"])  # 92

딕셔너리 에서 자주 쓰이는 내장함수, 메소드

값 in 딕셔너리 : 요소가 딕셔너리 안에 해당 Key가 있는지 Boolean으로 값을 반환하는 연산자

person = {"name":"Bob", "age": 21}

print("name" in person)       # True
print("email" in person)      # False
print("phone" not in person)  # True


심화 자료형

튜플 Tuple

튜플(tuple)은 리스트와 비슷하지만 불변인 자료형이다. ()로 감싸서 나타내고 순서가 있지만 생성,삭제,수정이 불가능하다.

변수명 = (value1,value2,value3)
a = (1,2,3)

print(a[0])
a[0] = 99 # Error!

#주로 딕셔너리 대신 리스트와 튜플로 딕셔너리 '비슷하게' 만들어 사용해야 할 때 많이 쓰임.
a_dict = [('bob','24'),('john','29'),('smith','30')]

집합 Set

집합(set)은 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형dlek.

변수명 = set()
a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1]
a_set = set(a)
print(a_set) # {1, 2, 3, 4, 5}  중복 제거


a = set(['사과','감','수박','참외','딸기'])
b = set(['사과','멜론','청포도','토마토','참외'])

print(a & b)  # 교집합
print(a | b)  # 합집합
print(a - b)  # 차집합

0개의 댓글