wn42
코딩이랑 이것저것
wn42
전체 방문자
오늘
어제
  • 분류 전체보기 (113)
    • 프로그래머스 (23)
      • LV1 (11)
      • LV2 (1)
      • LV3 (3)
      • 연습 (8)
    • 딥러닝 공부 (0)
      • 머신러닝&딥러닝 이론 (0)
    • 임베디드 (17)
      • Adventure Design (1)
      • 센서기반모바일로봇 (5)
      • ROS (9)
      • Google Coral (2)
    • C++ (38)
      • C++ 기초 (34)
      • 자료구조 및 알고리즘 (4)
    • Python (14)
      • 기본 파이썬 문법 (6)
      • Python 기초 (8)
    • 빅데이터 (9)
      • 빅데이터 첫걸음 시작하기(국비지원) (5)
      • 빅데이터 공부 (4)
    • 알고리즘 공부 (2)
      • 기본 알고리즘 (2)
    • 전자공학 (10)
      • 반도체 공정 (3)
      • 무선데이터통신 (7)
      • 반도체공학 (0)
    • C# (0)
      • C# 기본 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 바이트디그리
  • 인스턴스
  • numpy
  • 큐
  • stl
  • c++
  • 노드
  • 빅데이터 첫걸음 시작하기
  • Queue
  • 클래스
  • 상속
  • 변수
  • 데이터분석
  • 패스트캠퍼스
  • 파이썬
  • 조건문
  • K디지털크레딧
  • 스택
  • 스택/큐
  • 소멸자
  • 딥러닝
  • ROS
  • 내일배움카드
  • Python
  • google coral
  • 반복문
  • 데이터분석 인강
  • 빅데이터
  • 정렬
  • 프로그래머스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
wn42

코딩이랑 이것저것

Python/기본 파이썬 문법

1. 자료형

2022. 2. 17. 23:40

 자료형 

파이썬의 자료형은 기본 자료형뿐만 아니라, 사전 자료형, 집합 자료형 등 다양한 자료형을 기본으로 내장하고 있어서 편리하다.


 

수 자료형(Number Datatype)

정수형(integer)

  • 양의 정수
  • 음의 정수
  • 0
a = 1000 # 양의 정수
a = -1   # 음의 정수
a = 0    # 0

 

실수형(Real Number)

  • 소수점 아래의 데이터를 포함하는 수 자료형
  • e나 E를 이용하여 지수 표현 가능
    • 1e9 : 10의 9제곱
a = 157.93  # 양의 실수
a = -157.93 # 음의 실수
a = 5.      # 소수부가 0일 때 0을 생략
a = -.7     # 정수부가 0일 때 0을 생략
a = 1e9     # 10억의 지수 표현 방식
a = 75.25e1 # 752.5
a = 3954e-3 # 3.954

 

  • 컴퓨터 시스템은 부동 소수점(floating-point) 방식을 이용
  • 실수 자료형에는 4byte 혹은 8byte의 고정 메모리를 할당
  • 실수를 2진수 데이터로 처리하므로, 오차가 발생 ▶ 0.3 + 0.6 = 0.8999999..
  • 정확한 실수 표현을 위해 round 함수를 사용
# round(실수형데이터, 반올림하고자 하는 위치-1)
a = 0.3 + 0.6
print(a)           # 0.899999999
print(round(a,4))  # 0.9 -> 소수점 5번째 자리에서 반올림
0.8999999999999999
0.9

 

수자료형의 연산

  • 사칙연산(+, -, /, *)
  • 나머지연산자(%), 몫연산자(//)
  • 거듭제곱연산자(**)
a, b = 7, 3

print(a / b)  # 나누기
print(a % b)  # 나머지
print(a // b) # 몫
print(a ** b) # 거듭제곱
2.3333333333333335
1
2
343

 

리스트 자료형

  • 파이썬 리스트 자료형 ▶ 연결 리스트 자료구조 ▶ append(), remove() 등의 메서드를 지원
  • 리스트 대신에 배열 혹은 테이블이라고도 부른다.

리스트 만들기

  • 대괄호 []를 이용하거나, list()를 이용하여 리스트를 선언하고, 원소를 추가하여 초기화
a = list()  # 빈리스트 선언 1
a = []      # 빈리스트 선언 2

a = [1, 2, 3, 4, 5]  # 리스트 선언하면서 원소 초기화
print(a)      # [1, 2, 3, 4, 5]
print(a[4])   # 5
[1, 2, 3, 4, 5]
5

 

  • 크기가 N이고 모든 값이 0인 1차원 리스트
n = 5
a = [0] * n  # [0, 0, 0, 0, 0]
print(a)
[0, 0, 0, 0, 0]

 

리스트의 인덱싱과 슬라이싱

  • 인덱싱 : 인덱스를 입력하여 특정한 원소에 접근하는 것
  • 슬라이싱 : 연속적인 위치를 갖는 원소들을 가져오는 것
a = [1, 2, 3, 4, 5]
# 인덱싱
print(a[1])   # 2
print(a[-1])  # 5

# 슬라이싱
print(a[0:2])  # [1, 2]  슬라이싱의 마지막 숫자는 포함 안함
2
5
[1, 2]

 

리스트 컴프리헨션

  • 리스트를 초기화하는 방법 중 하나
  • 대괄호 안에 조건문과 반복문을 넣는 방식으로 리스트를 초기화할 수 있다.
# 0부터 9까지 수 중 홀수만 포함하는 리스트
array = [i for i in range(10) if i % 2 == 1]
print(array)   # [1, 3, 5, 7, 9]

# 1부터 9까지의 수의 제곱 값을 포함하는 리스트
array = [i * i for i in range(1,10)]
print(array)
[1, 3, 5, 7, 9]
[1, 4, 9, 16, 25, 36, 49, 64, 81]

 

  • 리스트 컴프리헨션은 2차원 리스트를 초기화할 때 매우 효과적으로 이용됨
  • N x M 크기의 2차원 리스트 초기화
n = 2
m = 3
array = [[0] * m for _ in range(n)]
print(array)  # [[0, 0, 0],[0, 0, 0]]
[[0, 0, 0], [0, 0, 0]]
  • 특정 크기의 2차원 리스트를 초기화할 때는 반드시 리스트 컴프리헨션을 이용해야 한다.
  • 각각의 행들이 서로 같은 참조를 하지 않게 하기 위함 ▶ 1행이 변할 때, 2행도 같이 변하지 않게 하기 위함

 

리스트 관련 기타 메서드

  • list.append() : 리스트 맨 끝에 원소 삽입, 시간 복잡도 O(1)
  • list.sort(), list.sort(reverse=True) : 오름차순, 내림차순(reverse=True)으로 리스트 정렬, 시간 복잡도 O(NlogN)
  • list.reverse() : 원소의 순서를 뒤집음, 시간 복잡도 O(N)
  • list.insert(삽입할 위치 인덱스, 삽입할 값) : 특정 인덱스에 값 삽입(기존에 있던 값은 뒤로 밀림), 시간 복잡도 O(N)
    • insert()는 원소 삽입뿐 아니라 원소 위치 조정도 해야해서 append()에 비해 시간복잡도가 크다.
  • list.count(특정값) : 특정값을 갖는 원소 개수 카운트, 시간 복잡도 O(N)
  • list.remove(특정값) : 특정값을 갖는 원소 중 1개를 제거, 시간 복잡도 O(N)
    • 파이썬은 remove() 외에 특정값을 가지는 모든 원소를 제거하기 위한 함수가 없으므로 다음과 같이 작성해야 한다.
a = [1, 2, 3, 4]
remove_set = [2, 3]

# a의 원소 중 remove_set에 없는 원소만 result list에 추가
result = [i for i in a if i not in remove_set]
print(result)   # [1, 4]
[1, 4]

 

문자열 자료형

문자열 초기화

  • 문자열 변수 초기화는 큰따옴표("), 작은따옴표(')를 이용.
  • 큰따옴표 안에 작은따옴표, 작은따옴표 안에 큰따옴표, 백슬래시()를 사용하면 따옴표 내부에 다른 따옴표를 표시할 수 있다.

 

문자열 연산

  • 파이썬은 문자열에 대한 연산도 지원
a = "Hello"
b = "World"
print(a + " " + b)  # Hello World
print(a * 3)  # HelloHelloHello
print(a[1:4])  # ell
Hello World
HelloHelloHello
ell

 

튜플 자료형

  • 튜플은 값 변경이 불가능 ▶ immutable (반면에 list는 mutable)
  • () 소괄호 혹은 tuple()로 정의
t = tuple((1, 3, 4))
t
(1, 3, 4)

 

사전 자료형(Dictionary Datatype)

  • 키(key)와 값(value)의 쌍을 데이터로 가지는 자료형
  • 변경 불가능한 데이터를 키로 사용할 수 있다. (수 자료형, 문자열 자료형, 튜플 자료형)
  • 순서가 없어 인덱싱, 슬라이싱이 불가능
  • 파이썬 사전 자료형 ▶ '해시 테이블' 이용
    • 데이터의 검색 및 수정: O(1)
data = dict()
data['사과'] = 'Apple'
data['바나나'] = 'Banana'
data['코코넛'] = 'Coconut'

print(data)
{'사과': 'Apple', '바나나': 'Banana', '코코넛': 'Coconut'}

 

  • in 연산자를 이용하여(iterable 자료형에 사용 가능), 사전 안의 특정 원소를 찾을 수 있다.
    • iterable 자료형 ▶ 리스트, 튜플 같이 순차적인 정보를 담고 있는 자료형
# '원소 in 사전' 형태로 특정 원소를 찾을 수 있음
if '사과' in data:
  print("True")  # True - 사과가 dict 안에 있음
else:
  print("False")  # False - 사과가 dict 안에 없음
True

 

  • 사전의 key와 value를 뽑기 위한 함수가 존재한다.
  • keys() 함수 : 키 데이터만 뽑아 리스트로 이용
  • values() 함수 : 값 데이터만 뽑아 리스트로 이용
key_list = data.keys()
value_list = data.values()

print(key_list)
print(value_list)

for key in key_list:
  print(data[key])
dict_keys(['사과', '바나나', '코코넛'])
dict_values(['Apple', 'Banana', 'Coconut'])
Apple
Banana
Coconut

 

집합자료형

집합 자료형 소개

  • 집합 자료형 set()
  • 집합 자료형 set의 특징
    • 중복을 허용하지 않는다.
    • 순서가 없다.
  • 순서가 없어서 인덱싱, 슬라이싱은 사용 불가능
  • 집합 자료형은 key 없이, 단순히 value 데이터만 담는다.
    • 데이터 검색 시간 복잡도: O(1)
  • '특정한 데이터가 이미 등장한 적이 있는지 여부'를 체크할 때 매우 효과적
  • set() 함수 또는 {} 중괄호를 이용하여 선언, 선언과 동시에 (,) 콤마를 이용하여 원소 초기화 가능
# set() 이용하여 초기화
data = set([1, 1, 2, 3, 4])
print(data)

# {} 중괄호 이용하여 초기화
data = {1, 1, 2, 3, 4}
print(data)
{1, 2, 3, 4}
{1, 2, 3, 4}

 

집합 자료형 연산

  • 기본적인 집합 연산으로는 합집합, 교집합, 차집합 연산이 있다.
  • 합집합 : ('|')
  • 교집합 : ('&')
  • 차집합 : ('-')
a = {1, 2, 3, 4, 5}
b = {1, 3, 5, 7, 9}

print(a | b) # 합집합
print(a & b) # 교집합
print(a - b) # 차집합
{1, 2, 3, 4, 5, 7, 9}
{1, 3, 5}
{2, 4}

 

집합 자료형 관련 함수

  • add() : set에 하나의 값을 추가할 때
  • update() : set에 여러 개의 값을 한꺼번에 추가할 때
  • remove() : 특정값을 제거할 때
    • add(), remove() 함수는 모두 시간 복잡도가 O(1)
data = {1, 2, 3}
print(data)

# 원소 추가
data.add(4)
print(data)

# 원소 여러 개 추가
data.update([5,6])
print(data)

# 특정 원소 삭제
data.remove(3)
print(data)

 

    'Python/기본 파이썬 문법' 카테고리의 다른 글
    • 5. 입출력
    • 4. 함수
    • 3. 반복문
    • 2. 조건문
    wn42
    wn42
    코딩이랑 이것저것 하는 블로그

    티스토리툴바