Python - 자료형, 연산자
<자료형>
: 프로그래밍이란 자료(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 함수를 활용