Python

Python - 자료형, 연산자

구름이팡팡 2021. 7. 12. 14:10
728x90

<자료형>

: 프로그래밍이란 자료(Data)를 처리하는 일을 주로 함

파이썬에서는 자료를 손쉽게 다룰 수 있도록 내장 자료형을 제공

- 숫자(수치) 자료형: 정수(int), 실수(float), 복소수(complex)

- 불(Bool) 자료형: True, False

 cf) 파이썬은 대소문자를 구별하기 때문에 정확히 True, False로 사용해야 함

 · 내장 함수 bool()을 활용해 참과 거짓을 확인할 수 있음

 · 자료형의 값이 있는지 없는지 판단할 때도 이용

- 군집 자료형: 문자열(str), 리스트(list), 튜플(tuple), 사전(dict), 집합(set)

 

<내장 자료형 구분>

- 기억장소의 크기

- 저장되는 데이터의 형태

- 저장 방식

직접 표현, 시퀀스(순서o), 매핑(순서x)

- 값의 범위

- 변경 가능성: 변경 가능, 변경 불가능

- 저장 개수: 리터럴(한 가지), 컨테이너(여러 가지)

 

<내장 자료형의 특징>

- 파이썬은 동적 자료형 지원: 프로그래머가 자료형을 직접 설정할 필요가 없음, 데이터를 입력하면 데이터 타입을 알아낸 후 입력된 데이터의 특성에 맞는 영역을 확보하여 줌

- 파이썬은 객체지향형 언어로 자료형 또한 객체와 레퍼런스(Reference)로 관리


<수치형 자료형>

- 정수 자료형(int): 소수점이 없는 숫자(양수, 0, 음수)

 · 기본으로 10진수 인데 접두어를 활용해 2, 8, 16진수 등으로 표현 가능

 · 범위의 제한이 없음(파이썬 버전 3부터 Long형 또한 정수형으로 통합)

- 실수 자료형(float): 소수점이 있는 숫자

 · 지수 표현 가능(e)

- 복소수 자료형(complex): 실수와 허수로 구성된 숫자

 · 실수부 + 허수부j

 

<숫자연산자>

- 사칙 연산자

- //: 숫자를 나누고, 소수점 이하의 자리수를 버리는 나누기 연산자

- %: 나머지 연산자

 cf) 내장함수 활용 가능: divmod()

- **: 제곱 연산자

 cf) 내장함수 활용 가능: pow()

- 복합 대입 연산자 (+=, -=, *=, /=, %=, **=)

- math 모듈 사용

 · 사용 방법: import math

 ex) 제곱근 print(math.sqrt(8))

 cf) math. 적은 후 Tab키를 눌러 활용할 수 있는 함수 목록 확인 가능

 

<관계 연산자>

- 크다, 작다, 같다(==), 다르다(!=), 크거나 같다(>=), 작거나 같다(<=)

- 관계 연산자는 Bool 값을 반환

 

<논리 연산자>

- 논리 값을 판단해주는 연산자로 and, or, not 세 가지가 있음

 · and: 둘다 True 일때만 True(오른쪽 출력)

 · or: 하나라도 True이면 True(왼쪽 우선 출력)

 · not: 정반대로 출력

- 관계 연산자는 Bool 값을 반환

 

<문자열 자료형(str)

: 문자, 단어 등으로 구성된 문자들의 집합

- 큰따음표 작은따옴표 모두 사용 가능

- 문자열 안에 따옴표를 넣는 방법

 · 이스케이프 문자를 같이 사용(\', \")

 · 다른 따옴표를 같이 사용

  ex) a="'안녕하세요'"

    print(a) 

    결과  → '안녕하세요'

- 줄바꿈: 이스케이프 문자 사용 (\n), 따옴표 세개로 감싸주고 줄바꿔서 적으면 적용됨. (""")

- 문자열은 시퀀스 자료형으로 인덱스가 있고, 인덱스로 값의 접근이 가능

 

<문자열 연산자>

- 연결 연산자(+)

- 반복 연산자(*)

 ex) '안녕하세요'*3  →  '안녕하세요안녕하세요안녕하세요'

- 선택 연산자(인덱싱)

- 범위 선택 연산자(슬라이싱)

변수[시작(이상):끝(미만):스텝]

ex) 역순정렬로 활용

    a = '안녕하세요'

    print(a[ : : -1])                → 요세하녕안

 

<문자열 메소드>

: 파이썬의 문자열 자료형은 변경이 불가능하기 때문에 직접 문자열을 수정하는 방식이 아닌 변경된 문자를 반환하는 방식으로 메소드를 사용

- 문자열 메소드의 종류

 · upper(): 문자열을 대문자로 변경

 · lower(): 문자열을 소문자로 변경

 · swapcase(): 대문자는 소문자로, 소문자는 대문자로 변경

 · capitalize(): 첫 문자만 대문자로 변경

 · title(): 각 단어의 첫 문자를 대문자로 변경

 · strip(): 문자열 양쪽 끝을 잘라냄(기본은 공백인데 이거 쓰면 공백 제거됨)

 · istrip(): 문자열 왼쪽 끝을 잘라냄

 · rstrip(): 문자열 오른쪽 끝을 잘라냄

 · split(): 문자열을 구분자로 분리해 리스트로 반환

 · splitlines(): 문자열을 라인 단위로 분리해 리스트로 반환

 · index(): 해당 문자열의 인덱스를 반환 (없는 경우 에러)

 · find(): 해당 문자열의 인덱스를 반환 (없는 경우 -1) 

 · 그 외 문자열 메소드

   : count, startswith, isdigit, isnumeric, isalpha ……

    ① dir(str) 명령으로 확인 가능

    ② 문자열 정의 후 . + Tab 키로 확인 가능

 

<문자열 포맷팅>

: 변수를 활용하여 문자열을 생성할 때 사용

- 중괄호 안에 format()의 내용 삽입(C언어의 printf문과 비슷)

 ex) a = "{}".format("Hello")

     print(a)                          → Hello

 ex) print("{} 더하기 {} 는 {} " .format(1,2,3))    →  1 더하기 2는 3

- 중괄호에 순서를 적어 포맷팅 출력 순서를 변경 가능

- 중괄호에 식별자를 적어 출력 가능

- 자리 표기 가능

 ① f로 타입을 실수로 변경

 ② :0.숫자로 소수점 자리 수 변경

 ③ :숫자로 공백 출력 가능 ex) {:2}


<리스트 자료형>

:다양한 자료형을 순차적으로 저장하는 집합적 자료형, 다른 프로그래밍 언어(C, C++)등과 달리 동적 배열, 다차원 배열, 인덱싱 등을 훨씬 쉽고 편리하게 사용할 수 있음

- 대괄호([ ])로 정의함, 또는 list()

- 문자열과 같이 인덱스와 슬라이싱(범위를 선택해서 잘라옴) 연산 가능

- 요소의 값 변경 가능 (리스트 요소로 다른 자료형이 올 수 있음)

- 여러 함수 활용 가능 

   cf) 선언한 리스트에서 .+tab 키를 눌러 사용할 수 있는 함수 확인 가능

 · insert 함수: 해당 인덱스에 값 추가

 · pop 함수: 해당 인덱스의 값 삭제

 · reverse 함수: 값을 거꾸로 정렬

 · count 함수: 해당 값의 개수

 · append 함수: 해당 값을 요소로 추가

 · extend 함수: 해당 리스트를 뒤에 가져다 붙임(확장)

 · sort 함수: 오름차순으로 값 정렬 (정렬 방식 변경 가능)

 · index 함수: 리스트에 해당 값이 있으면 해당 값의 인덱스 반환

 · copy: 함수 리스트를 복사

- 다차원 배열로 사용 가능: 리스트 안의 리스트

- 리스트를 만드는 반복문을 짧고 간결하게 만들어 줌: [식 for 변수 in 리스트(튜플, 문자열, 사전 등)] 

- 큐(Queue)로 활용: append 함수를 사용해서 추가, pop함수를 사용해 제거(앞에서부터 빠져야하니까 인덱스를0으로 준다)

 cf) 큐: FIFO 구조로 저장하는 형식

- 스택(Stack)으로 활용: append 함수를 사용해서 추가, pop함수를 사용해 제거(뒤에서부터 빠져야하니까 인덱스를 아무것도 주지 않고 디폴트 값으로 둔다)

 cf) 스택: LIFO 구조로 저장하는 형식

 

<튜플 자료형> 

: 다양한 자료형을 순차적으로 저장하는 집합적 자료형 리스트와 비슷하지만 값을 변경할 수 없는 특징이 있음

- 소괄호로 정의함, 또는 tuple()

- 리스트와 비슷한 자료형: 인덱싱, 슬라이싱 등의 연산 가능

 cf) 선언한 튜플에서 .+tab 키를 눌러 사용할 수 있는 함수 확인 가능

- 값 변경 불가: 리스트에서 활용할 수 있는 여러 함수들도 튜플에서 사용할 수 없음, 그래서 값을 세거나 하는 count 함수 같은 종류만 이용 가능

- 상수적인 특징을 가지고 있기 때문에 리스트보다 연산에 빠른 장점이 있음, 가볍고 많은 데이터 사용 가능
- 원소가 하나인 튜플 정의 방법: 하나만은 그냥은 안돼서 콤마를 사용한다.

 ex) t=(1,)

 

<사전(Dict) 자료형>

: 키를 이용하여 값을 저장하는 자료형

- 정수형 인덱스가 아닌 키로 값을 저장하기 때문에 저장된 자료의 순서는 의미가 없음

- 인덱스가 정수형으로 제공되지 않고 키와 값으로 매핑이 되어있는 집합적 자료형

- 중괄호로 정의함 {'키':값}, dict()

- 값의 추가, 수정이 매우 용이함

- 사전에서 키는 고유한 값이므로 기존 사전에 있는 키에 새로운 값을 선언하면 새로운 값으로 변경됨

- 사전에 없는 키라면, 새로운 값이 추가됨

- 기존에 없는 키를 단순히 참조한다면 에러 발생

- 사전 자료형의 함수 활용(Keys, Values, Items)

- 함수를 활용해 키, 값을 따로 뽑아 리스트에 반환할 수 있음

 · update 함수: 두 사전의 병합

 · clear 함수: 전체 삭제

- 반복문에서의 사전

 ex) d={'a':1, 'b':2}

 for i in d:               →    키 출력    a  

 print(i)                                       b

 

 for i in d.values():     →    값 출력    1

 print(i)                                       2

 

 for i in d.items():     →    키, 값 출력    ('a', 1)

 print(i)                                          ('b', 1)

 

 ex) a.update(b): a사전에 b사전을 새롭게 업데이트하는 함수로 a값만 변경됨

- 키나 값의 유무 알아보기: 키나값 in 변수명(사명전)

- Json, XML 형식과 유사하기 때문에 NoSQL, OPEN API , 빅데이터 분석 등에 많이 활용됨

 

<집합(Set) 자료형>

: 중복과 순서가 없는 자료형

• 순서가 없기 때문에 인덱싱 또한 지원하지 않음

• 중괄호로 정의함, set()

cf) 파이썬의 집합은 교집합, 합집합 등 수학의 집합론을 따르고 있음

- 교집합, 합집합, 차집합의 연산도 지원

- 추가, 삭제 방법

▪ 하나의 값을 추가하려면 add 함수 활용

▪ 여러 값을 추가할 때는 update 함수로 리스트에 값을 넣어 추가

▪ 삭제는 remove 함수를 활용

 

 

728x90