[Python] 파이썬 자료형 이해하기 - number, string, list, tuple, dictionary, set, bool

Jaeyoung·2022년 10월 18일
0

🦁멋사 ai 7기 TIL

목록 보기
5/7

목표 설정

  • 멋쟁이사자 AI 스쿨 1일차(220919) 학습 내용 정리하기
  • 파이썬의 기초인 자료형 (Bool, 숫자, 문자열, 리스트, 딕셔너리, 튜플, 집합) 이해하기

자료형이란 ?

자료형은 데이터의 '종류'를 말하며 영어로는 Type이라고 한다. 정수라면 integer 타입, 실수라면 float 타입, 이름과 같이 문자 형태라면 string 타입 등 데이터 종류에는 여러가지 타입이 있다.

숫자형 (Number)

파이썬에서 수는 정수 (int)실수 (float) 로 구분되며 천 단위 구분기호 없이 오로지 숫자로만 구성된 데이터 이다.

  • 정수 (interger) : 소수점 이하의 값을 갖지 않는 수 ( 표현 방식 : 부호 없는 정수 / 부호 있는 정수 )
  • 실수 (floating-point) : 소수점이 포함된 수 ( 표현 방식: 부호 없는 실수 / 부호 있는 실수 )

📍 숫자 연산

파이썬의 숫자는 덧셈, 뺄셈, 곱셈, 나눗셈의 사칙연산과 제곱, 나누기 연산 후 몫 또는 나머지를 구할 수 있음
특히, 거듭 제곱(**)은 정수형 상수의 표현 범위는 제한이 없으며, CPU 레지스터로 표현할 수 있는 크기보다 큰 정수를 다룰 때는 연산 속도가 느려짐

- 사칙연산 : 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/)
- 그 외 연산자 : 제곱(**), 나눗셈 후 몫(//), 나눗셈 후 나머지(%)

나눗셈을 할 때, 정수 / 정수 를 해도 결과는 항상 실수 (float) 로 반환 됨
덧셈, 뺄셈, 곱셈, 제곱에서 실수를 하나 이상 사용하면 실수형으로 반환 됨

문자열 자료형 (String)

문자열 (string) 이란 문자, 단어 등으로 구성된 문자들의 집합을 의미한다. 예를 들어 다음과 같은 문자열이다.

"내 이름은 김삼순"
"The Zen of Python"
'12345'
  • 위 문자열을 보면 모두 따옴표 ("" 또는 '') 로 둘러싸여 있다.
  • 파이썬에서 문자열은 여러 줄의 문장을 처리할 때 백슬래시 문자와 소문자 n을 조합한 \n 이스케이프 코드를 사용한다.

📍 문자열 연산

파이썬에서는 문자열을 더하거나 곱할 수 있다. (파이썬만의 장점!!!)
문자열 더해서 연결하기(Concatenation) : 문자열 끼리 덧셈 기호(+)를 사용하여 문자열을 연결할 수 있음
문자열 곱해서 반복하기 : 문자열과 숫자를 곱셈 기호(*)를 사용하여 문자열을 반복할 수 있음
문자열 길이 구하기 : len() 함수를 사용해서 문자열의 총 길이를 구할 수 있음

📍 문자열 인덱싱과 슬라이싱

파이썬에서 문자열을 인덱싱, 슬라이싱으로 원하는 부분을 잘라내어 가져올 수 있음
인덱싱(Indexing) : 문자열의 인덱스 번호를 사용하여 문자열 안의 특정한 값을 뽑아냄
슬라이싱(Slicing) : 문자열의 인덱스 번호를 사용하여 문자열 안의 특정한 부분을 뽑아냄

📍 문자열 포매팅(Formatting)

문자열 포메팅이란 문자열 안에 어떤 값을 삽입하는 방법이다.

format 함수

# 1개의 값 넣기
>>> "오늘 강수확률은 {}% 입니다.".format(0)
'오늘 강수확률은 0% 입니다.'

# 2개 이상의 값 넣기
# .format(21, 11)로 넣어도 됨
>>> "오늘 서울의 최고온도는 {highest}°C 이고, 최저온도는 {lowest}°C입니다.".format(highest=21, lowest=11)
'오늘 서울의 최고온도는 21°C 이고, 최저온도는 11°C입니다.'

f-string

>>> f"오늘 서울지역의 최고온도는 {21}도, 최저온도는 {11}도 입니다."
'오늘 서울지역의 최고온도는 21도, 최저온도는 11도 입니다.'

📍 문자열 함수

  • 문자 개수 세기 : .count()
  • 문자 위치 알려주기 : .find() / .index()
  • 문자열 삽입 : .join()
  • 소문자로 변환 : .lower()
  • 대문자로 변환 : .upper()
  • 양쪽 공백 제거 : .strip()
  • 왼쪽 공백 제거 : .lstrip()
  • 오른쪽 공백 제거 : .rstrip()
  • 문자열 바꾸기 : .replace(바뀌게 될 문자열, 바꿀 문자열)
  • 문자열 나누기 : .split()
  • 사용가능한 함수 목록 보기 : dir(변수이름)

리스트 자료형 (List)

리스트 는 대괄호로 묶여진 자료형을 말하며 아래 예시와 같은 형태임
대괄호는 리스트, 인덱싱, 슬라이싱에 사용됨

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
['짜장', '볶음밥']

📍 리스트 함수

문자열과 마찬가지로 리스트 변수 이름 뒤에 . 를 붙여 여러 가지 함수를 사용할 수 있다.

  • 리스트에 요소 추가 (append) : 리스트 맨 뒤에 값 추가 됨
  • 리스트 정렬 (sort)
  • 리스트 뒤집기 (reverse)
  • 위치 반환 (index) : 리스트 내의 요소 값을 넣으면 그 요소의 인덱스 값을 반환
  • 리스트에 요소 삽입 (insert(a, b)) → a : 위치, b : 삽입할 요소
  • 리스트 요소 제거 (remove) : 리스트에서 첫 번째로 나오는 요소 삭제
  • 리스트 요소 끄집어내기 (pop) : 리스트의 맨 마지막 요소를 돌려주고, 그 요소 삭제
  • 리스트에 포함된 요소 개수 세기 (count) : 리스트 안에 포함된 개수 반환
  • 리스트 확장 (extend) : 리스트에 리스트를 더함 → 리스트 += [] 와 동일한 기능

튜플 자료형 (Tuple)

튜플(tuple) 은 몇 가지 점을 제외하곤 리스트와 거의 비슷하며 차이점은 아래와 같다.

  • 리스트는 []로 둘러싸여있지만 튜플은 ()으로 둘러싼다.
  • 리스트는 그 값의 생성, 삭제, 수정이 가능하지만, 튜플은 그 값을 바꿀 수 없다.
  • 튜플은 콤마(,)가 있다면 괄호를 생략해도 tuple로 저장이 된다.
  • 튜플의 요솟값은 한번 정하면, 내부의 값을 바꿀 수 없다.
characters = ('고길동', '둘리', '박희동')
new_characters = ('도우너', '또치', '마이콜')

# 인덱싱하기
characters[0]'홍길동'

# 슬라이싱하기
characters[1:]('둘리', '박희동')

# 튜플 더하기
characters + new_characters  →  ('고길동', '둘리', '박희동', '도우너', '또치', '마이콜')

# 튜플 곱하기
new_characters * 2('도우너', '또치', '마이콜', '도우너', '또치', '마이콜')

# 튜플 길이 구하기
len(characters)3

딕셔너리 자료형 (Dictionary)

딕셔너리 란? 값에게 이름을 붙여서 매칭시켜주는 것이다.

  • 앞에서 배운 리스트, 튜플의 각 요소들은 어떤 값인지 알 수 없다.
  • 하지만, 딕셔너리의 key : value 를 이용하면 값이 어떤 의미를 가지는지 알 수 있다.
  • 형식 : {키 : 값} 으로, 아래와 같이 사용할 수 있다.
  • 딕셔너리에서 key는 고유한 값으로, 중복된 값을 포함하면 안된다. (중복시, 맨 뒤에 적힌 key:value 값만 살아남음)

📍 Key 리스트 만들기 (keys)

>>> menu.keys()
dict_keys(['짜장면', '짬뽕', '유산슬'])>>> list(menu.keys())
['짜장면', '짬뽕', '유산슬']

📍 Value 리스트 만들기 (values)

>>> menu.values()
dict_values([4000, 5000, 15000])
>>> list(menu.values())
[4000, 5000, 15000]

📍 Key, Value 쌍 얻기 (items)

>>> menu.items()
dict_items([('짜장면', 4000), ('짬뽕', 5000), ('탕수육', 15000)])
>>> list(menu.items())
[('짜장면', 4000), ('짬뽕', 5000), ('탕수육', 15000)]

📍 Key: Value 쌍 다 지우기 (clear)

>>> menu.clear()
>>> menu
{}

📍 Key로 Value 얻기 (get)

>>> dict_num = {"고길동" : 1, "둘리" : 2, "희동" : 3, "도우너" : 4}
>>> dict_num.get("고길동")
1

📍 Key 유무 확인 (in)

>>> "또치" in dict_num
False
>>> "도우너" in dict_num
True

집합 자료형 (set)

집합 자료형은 순서가 없고, 중복을 허용하지 않는다는 특징이 있다.

  • 리스트와 튜플은 순서가 있기 때문에 입력해준 값 대로 정렬되는데, 집합은 뒤죽박죽으로 정렬된다.
  • 리스트와 튜플은 중복된 값을 포함할 수 있지만, 집합은 중복된 값은 스스로 필터링한다.
  • 알아둘 것 : 순서가 없는 자료형이기 때문에 인덱싱을 사용하려면, 리스트나 튜플 형태로 변환 후 사용해야 함
>> order_list = ["짜장면", "탕수육", "짬뽕", "짜장면", "볶음밥"]
>> order_set = set(order_list)
>> order_set
{'볶음밥', '짜장면', '짬뽕', '탕수육'}

교집합, 합집합, 차집합

  • 교집합 (&) : 두 집합의 교집합 값 반환
  • 합집합 (|) : 두 집합의 전체 값 반환 (중복된 값은 하나씩 반환)
  • 차집합 (-) : 두 집합의 차집합 값 반환

집합 함수

문자열과 마찬가지로 집합 변수 이름 뒤에 . 를 붙여 여러 가지 함수를 사용할 수 있음

  • 값 1개 추가 (add) : 한개의 값 추가 (순서 무작위로 들어감)
  • 값 여러 개 추가 (update) : 리스트 또는 튜플 형태로 여러 개의 요소 추가 (순서 무작위로 들어감)
  • 특정 값 제거 (remove) : set 자료형에 들어가있는 특정 값 제거

불 자료형 (Bool)

불(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)

profile
데이터 분린이:)

0개의 댓글