자료형은 데이터의 '종류'를 말하며 영어로는 Type이라고 한다. 정수라면 integer 타입, 실수라면 float 타입, 이름과 같이 문자 형태라면 string 타입 등 데이터 종류에는 여러가지 타입이 있다.
파이썬에서 수는 정수 (int) 와 실수 (float) 로 구분되며 천 단위 구분기호 없이 오로지 숫자로만 구성된 데이터 이다.
- 정수 (interger) : 소수점 이하의 값을 갖지 않는 수 ( 표현 방식 : 부호 없는 정수 / 부호 있는 정수 )
- 실수 (floating-point) : 소수점이 포함된 수 ( 표현 방식: 부호 없는 실수 / 부호 있는 실수 )
파이썬의 숫자는 덧셈, 뺄셈, 곱셈, 나눗셈의 사칙연산과 제곱, 나누기 연산 후 몫 또는 나머지를 구할 수 있음
특히, 거듭 제곱(**)은 정수형 상수의 표현 범위는 제한이 없으며, CPU 레지스터로 표현할 수 있는 크기보다 큰 정수를 다룰 때는 연산 속도가 느려짐
- 사칙연산 : 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/)
- 그 외 연산자 : 제곱(**), 나눗셈 후 몫(//), 나눗셈 후 나머지(%)
나눗셈을 할 때, 정수 / 정수 를 해도 결과는 항상 실수 (float) 로 반환 됨
덧셈, 뺄셈, 곱셈, 제곱에서 실수를 하나 이상 사용하면 실수형으로 반환 됨
문자열 (string) 이란 문자, 단어 등으로 구성된 문자들의 집합을 의미한다. 예를 들어 다음과 같은 문자열이다.
"내 이름은 김삼순" "The Zen of Python" '12345'
- 위 문자열을 보면 모두 따옴표 (
""
또는''
) 로 둘러싸여 있다.- 파이썬에서 문자열은 여러 줄의 문장을 처리할 때 백슬래시 문자와 소문자 n을 조합한 \n 이스케이프 코드를 사용한다.
파이썬에서는 문자열을 더하거나 곱할 수 있다. (파이썬만의 장점!!!)
문자열 더해서 연결하기(Concatenation) : 문자열 끼리 덧셈 기호(+)를 사용하여 문자열을 연결할 수 있음
문자열 곱해서 반복하기 : 문자열과 숫자를 곱셈 기호(*)를 사용하여 문자열을 반복할 수 있음
문자열 길이 구하기 : len() 함수를 사용해서 문자열의 총 길이를 구할 수 있음
파이썬에서 문자열을 인덱싱, 슬라이싱으로 원하는 부분을 잘라내어 가져올 수 있음
인덱싱(Indexing) : 문자열의 인덱스 번호를 사용하여 문자열 안의 특정한 값을 뽑아냄
슬라이싱(Slicing) : 문자열의 인덱스 번호를 사용하여 문자열 안의 특정한 부분을 뽑아냄
문자열 포메팅이란 문자열 안에 어떤 값을 삽입하는 방법이다.
# 1개의 값 넣기
>>> "오늘 강수확률은 {}% 입니다.".format(0)
'오늘 강수확률은 0% 입니다.'
# 2개 이상의 값 넣기
# .format(21, 11)로 넣어도 됨
>>> "오늘 서울의 최고온도는 {highest}°C 이고, 최저온도는 {lowest}°C입니다.".format(highest=21, lowest=11)
'오늘 서울의 최고온도는 21°C 이고, 최저온도는 11°C입니다.'
>>> f"오늘 서울지역의 최고온도는 {21}도, 최저온도는 {11}도 입니다."
'오늘 서울지역의 최고온도는 21도, 최저온도는 11도 입니다.'
리스트 는 대괄호로 묶여진 자료형을 말하며 아래 예시와 같은 형태임
대괄호는 리스트, 인덱싱, 슬라이싱에 사용됨menu = ["짜장면", "짬뽕", "볶음밥", "탕수육", "깐풍기", "유산슬"] menu_price = [4000, 5000, 5500, 18000, 20000, 30000] menu_sourses = ["짜장면", ["춘장", "면", "채소", "고기"], "볶음밥", ["쌀", "새우", "채소", "소스"]]
# 인덱싱
menu[0] → '짜장면'
menu_price[-1] → 30000
# 슬라이싱
menu[:5] → ['짜장면', '짬뽕', '볶음밥', '탕수육', '깐풍기']
menu[::2] → ['짜장면', '볶음밥', '깐풍기']
menu_price[::-1] → [30000, 20000, 18000, 5500, 5000, 4000]
# 리스트 요소 불러오기
menu_sourses[1][0] → '춘장'
menu_sourses[3][1] → '새우'
# 리스트 값 수정하기
>>> menu[0] = "짜장"
>>> menu
["짜장", "짬뽕", "볶음밥", "탕수육", "깐풍기", "유산슬"]
# 리스트 값 삭제하기 (del 함수)
>>> del menu[3:]
>>> menu
['짜장', '짬뽕', '볶음밥']
# 리스트 값 삭제하기 (remove 함수)
>>> menu.remove("짬뽕")
>>> menu
['짜장', '볶음밥']
문자열과 마찬가지로 리스트 변수 이름 뒤에 .
를 붙여 여러 가지 함수를 사용할 수 있다.
튜플(tuple) 은 몇 가지 점을 제외하곤 리스트와 거의 비슷하며 차이점은 아래와 같다.
- 리스트는 []로 둘러싸여있지만 튜플은 ()으로 둘러싼다.
- 리스트는 그 값의 생성, 삭제, 수정이 가능하지만, 튜플은 그 값을 바꿀 수 없다.
- 튜플은 콤마(,)가 있다면 괄호를 생략해도 tuple로 저장이 된다.
- 튜플의 요솟값은 한번 정하면, 내부의 값을 바꿀 수 없다.
characters = ('고길동', '둘리', '박희동')
new_characters = ('도우너', '또치', '마이콜')
# 인덱싱하기
characters[0] → '홍길동'
# 슬라이싱하기
characters[1:] → ('둘리', '박희동')
# 튜플 더하기
characters + new_characters → ('고길동', '둘리', '박희동', '도우너', '또치', '마이콜')
# 튜플 곱하기
new_characters * 2 → ('도우너', '또치', '마이콜', '도우너', '또치', '마이콜')
# 튜플 길이 구하기
len(characters) → 3
딕셔너리 란? 값에게 이름을 붙여서 매칭시켜주는 것이다.
- 앞에서 배운 리스트, 튜플의 각 요소들은 어떤 값인지 알 수 없다.
- 하지만, 딕셔너리의 key : value 를 이용하면 값이 어떤 의미를 가지는지 알 수 있다.
- 형식 : {키 : 값} 으로, 아래와 같이 사용할 수 있다.
- 딕셔너리에서 key는 고유한 값으로, 중복된 값을 포함하면 안된다. (중복시, 맨 뒤에 적힌 key:value 값만 살아남음)
>>> menu.keys()
dict_keys(['짜장면', '짬뽕', '유산슬'])
>>> list(menu.keys())
['짜장면', '짬뽕', '유산슬']
>>> menu.values()
dict_values([4000, 5000, 15000])
>>> list(menu.values())
[4000, 5000, 15000]
>>> menu.items()
dict_items([('짜장면', 4000), ('짬뽕', 5000), ('탕수육', 15000)])
>>> list(menu.items())
[('짜장면', 4000), ('짬뽕', 5000), ('탕수육', 15000)]
>>> menu.clear()
>>> menu
{}
>>> dict_num = {"고길동" : 1, "둘리" : 2, "희동" : 3, "도우너" : 4}
>>> dict_num.get("고길동")
1
>>> "또치" in dict_num
False
>>> "도우너" in dict_num
True
집합 자료형은 순서가 없고, 중복을 허용하지 않는다는 특징이 있다.
- 리스트와 튜플은 순서가 있기 때문에 입력해준 값 대로 정렬되는데, 집합은 뒤죽박죽으로 정렬된다.
- 리스트와 튜플은 중복된 값을 포함할 수 있지만, 집합은 중복된 값은 스스로 필터링한다.
- 알아둘 것 : 순서가 없는 자료형이기 때문에 인덱싱을 사용하려면, 리스트나 튜플 형태로 변환 후 사용해야 함
>> order_list = ["짜장면", "탕수육", "짬뽕", "짜장면", "볶음밥"] >> order_set = set(order_list) >> order_set {'볶음밥', '짜장면', '짬뽕', '탕수육'}
문자열과 마찬가지로 집합 변수 이름 뒤에 .
를 붙여 여러 가지 함수를 사용할 수 있음
불(bool) 자료형이란 참(True) 과 거짓(False) 를 나타내는 자료형으로, True와 False 값만 가질 수 있다.
- True : 참 ( True == 1 )
- False : 거짓 ( False == 0 )
- 조건문, 반복문에 사용할 때 주의하기
점프 투 파이썬 : 02장 파이썬 프로그래밍의 기초, 자료형
Python 문서 : 3. 파이썬의 간략한 소개
[Python] 파이썬 슬라이싱(slicing) 기본과 예제
Objects and classes in Python : Docs >> type(name, bases, dic)