recordingbetter's devlog

Python, Django, DRF, Postgresql, AWS, Docker....

Python 자료형

17 May 2017


파이썬 사용

용어

리터럴

변하지 않는 데이터 자체의 표현

  • 정수형 데이터
  • 문자열 데이터
  • 부동소숫점 데이터

표현식

값을 의미하는 표현, 값을 반환하는 표현

  • 변수
  • 수식 등..

구문

값의 의미를 가지고 있지 않고 목정을 수행하는 코드

for char in '안녕하세요':
	print(char)

변수

객체(object)는 데이터의 형태를 결정해주는 타입. 객체의 타입을 바꿀 수 없음.

  • 자주 사용하는 객체는 메모리에 고정되어있음. (예: 1~100)
>>> a = 1
>>> b = 1
>>> id(a)		//고유의 주소를 출력하는 내장함수
4369052960	//같은 위치에 있음
>>> id(b)
4369052960	//같은 위치에 있음

데이터 타입 확인

>>> a = 1
>>> print(type(a))			//데이터 타입 확인
<class 'int'>

변수의 이름 제한

사용 가능한 문자

  • 소문자
  • 대문자 (첫 글자는 안씀)
  • 숫자
  • 언더스코어 _
  • 예약어는 사용할 수 없음.
    • False, class, finally, is, return, None, continue, for, lambda, try, True, def, from, nonlocal, while, and, del, global, not, with, as, elif, if, or, yield, assert, else, import, pass, break, except, in, raise

변수의 입력과 출력

input

>>>  var = input()
  • 실행하면 사용자의 입력을 대기
  • 입력된 값은 변수 var에 저장된다.
  • 입력된 데이터의 타입은 문자열

숫자

수학 연산자

연산자 설명 결과
+ 더하기 1+3 4
- 빼기 5-2 3
* 곱하기 4*5 20
/ 나누기 7/2 3.5
// 정수나누기 (결과는 정수만) 7//2 3
% 나머지 7%2 1
** 지수 2**10 1024

우선 순위

  • 연산 우선 순위는 수학의 우선 순위와 같음
  • 가독성의 문제가 있을 경우에는 괄호로 묶어준다.

진수 base

종류 표현
2진수(binary) 0b or 0B
8진수(octal) 0o or 0O
16진수(hex) 0x or 0X

형변환

>>> int(3.5)
3

>>> float(3)
3.0

문자열

Python3 에서는 문자열에서 기본적으로 유니코드(Unicode)를 사용하며, 변하지 않는다.(immutable)

문자열 표현

  • 작은 따옴표'나 큰 따옴표"로 묶어준다.
  • 여러줄의 문자열을 표현할 때에는 시작과 끝을 '''"""로 묶어준다.

문자열 연산 (더하기, 곱하기)

>>> a = 'abc'
>>> b = 'def'
>>> a + b
abcdef
>>> a * 3
abcabc

형변환

>>> str(147)		//숫자 int 타입 데이터를 문자열로 변환
'147'

이스케이프 문자

특수문자 또는 특별한 역할을 의미하는 문자

이스케이프 문자 설명
\a beep 발생
\t tab
\n 줄바꿈
\|\역슬래시 입력  
\’ ' 입력
\” " 입력

인덱스 연산

  • 문자열에서 문자를 추출하기 위해 []와 오프셋을 지정할 수 있다.
  • 첫 문자의 오프셋은 0, 가장 오른쪽은 -1로 시작한다.
  • 지정된 오프셋이 문자열의 범위를 넘어가면 에러 발생
>>> str = 'fastcampus'
>>> str[0]
'f'
>>> str[-1]
's'

슬라이스 연산

  • 슬라이스된 리스트가 새롭게 생성됨
  • [:] 처음부터 끝까지
  • [시작번호:] 시작번호부터 끝까지
  • [:끝번호] 처음부터 끝번호 전까지
  • [시작번호:끝번호] 시작번호부터 끝번호 전까지
  • [시작번호(이상):끝번호(미만):step] 시작번호부터 끝번호 전까지 step만큼 건너뛰면서..
  • [::-1] 처음부터 끝까지 역순으로 재배열

길이재기

  • len(문자열)

문자열 나누기 split

  • 주어진 구분자로 문자열을 나누어 리스트 형태로 반환
  • 변수.split(구분자) //구분자가 공백일 경우 생략 가능
>>> str = '1,2,3,4'
>>> str.split(',')
['1', '2', '3', '4']

문자열 합치기 join

”“.join(문자열) //순서 주의 문자열 사이에 넣을 문자.join(합칠 문자열)

>>> str = '1,2,3,4'
>>> str_split = str.split(str)
>>> '_'.join(str_split)
'1_2_3_4'

대소문자 다루기

>>> str.capitalize()			//문장의 첫문자를 대분자로 변환
>>> str.title()					//단어의 첫문자를 대분자로 변환
>>> str.upper()					//모두 대문자로 변환
>>> str.lower()					//모두 소문자로 변환
>>> str.swapcase()				//대문자를 소문자로, 소문자를 대문자로 변환

문자열 포멧

옛날스타일 %
변환 타입 설명
%s 문자열 str
%d 10진수 decimal
%x 16진수 hex
%o 8진수 octa
%f 10진 부동소수점수 float
%e 지수로 나타낸 부동소수점수 exponent
%g 10진 부동소수점수 또는 지수로 나타낸 부동소수점수
%% 리터럴 %
>>> '%s' % 42
'42'
>>> '%d x %d : %d' % (3, 4, 12)
'3 x 4 : 12'
옛 스타일 정렬
>>> d = 37
>>> f = 3.14
>>> s = 'Fastcampus'
>>> '%d %f %s' % (d, f, s)
'37 3.140000 Fastcampus'
>>> '%10d %10f %10s' % (d, f, s)
'        37   3.140000 Fastcampus'
>>> '%14d %14f %14s' % (d, f, s)
'            37       3.140000     Fastcampus'
>>> '%-14d %-14f %-14s' % (d, f, s)
'37             3.140000       Fastcampus    '
>>> '%-14.3d %-14.3f %-14.3s' % (d, f, s)
'037            3.140          Fas           '
새 스타일 {}, format
  • {}.format(변수)
  • 타입지정자 {:d} 등은 옛 스타일과 비슷함
>>> d = 37
>>> f = 3.14
>>> s = 'Fastcampus'

# 기본형태
>>> '{} {} {}'.format(d, f, s)
'37 3.14 Fastcampus'

# 각 인자의 순서 지정
>>> '{1} {2} {0}'.format(d, f, s)
'3.14 Fastcampus 37'

# 각 인자의 이름을 지정 (각 인자의 값을 지정해줘야 함)
>>> '{f} {s} {d}'.format(d=50, f=1.432, s='WPS')
'1.432 WPS 50'

# 딕셔너리로부터 변수 할당
>>> dict = {'d': d, 'f': f, 's': s}
>>> '{0[d]} {0[f]} {0[s]} {1}'.format(dict, 'WPS')
'1 3.14 fastcampur WPS'

# 타입 지정자 입력 (옛스타일의 타입지정자를 :다음에 입력)
>>> '{:d} {:f} {:s}'.format(d, f, s)
'37 3.140000 Fastcampus'

# 각 인자의 이름과 타입 지정자를 모두 사용
>>> '{digit:d} {float:f} {string:s}'.format(digit=700, float=1.4323, string='Welcome')
'700 1.432300 Welcome'

# 필드 길이 10, 우측정렬 (숫자의 기본은 우측정렬)
>>> '{:10d}'.format(d)
'        37'
>>> '{:>10d}'.format(d)
'        37'

# 필드 길이 10, 좌측정렬 (문자의 기본은 좌측정렬)
>>> '{:<10d}'.format(d)
'37        '
>>> '{:20s}'.format(s)
'Fastcampus          '

# 필드길이 10, 가운데 정렬
>>> '{:^10d}'.format(d)
'    37    '

# 필드길이 10, 가운데 정렬, 빈 공간은 ~로 채움
>>> '{:~^10d}'.format(d)
'~~~~37~~~~'
>>> '{:=^30s}'.format( ' install ' )
'========== install ==========='
blog comments powered by Disqus