-
파이썬 자료형 - 숫자형, 문자열Computer Science🖥️/Python 2021. 1. 28. 15:08
파이썬의 자료형에 대해 정리해보고자 한다.
1. 숫자형(Number)
: 숫자 형태로 이루어진 자료형
1) 숫자형 자료형
항목 파이썬 예시 정수(Integer) 123, -345, 0 실수(Floating-point) 123.45, -1234.5, 3.4e10 8진수(Octal) 0o34, 0o25 16진수(Hexadecimal) 0x2A, 0xFF * 실수형
a = 4.24E10 a = 4.24e-10
위와 같이 '컴퓨터식 지수 표현 방식'으로 파이썬에선 e와 E 둘 중 에 하나로 실수형을 표현하기도 한다.
여기서 4.24E10 은 4.24*10^10 을 의미한다.
* 8진수
:0o 또는 0O(숫자 0 + 알파벳 소문자 o 또는 대문자 O)로 시작하면 된다.
* 16진수 : 0x 로 시작하면 된다.
// 8, 16진수는 파이썬에선 잘 사용하지 않는 형태.
2) 숫자형을 활용하기 위한 연산자
숫자형 연산자 파이썬 예시 사칙 연산(+, -, *, /) 2 + 3, 3 - 1, 3 * 5, 3 / 4 제곱 연산자 (**) 3** 4
=> 81나머지 반환 연산자 (%) 7 % 3
=> 1몫 반환 연산자 (//) 7 // 4
=> 12. 문자열(String)
: 문자, 단어 등으로 구성된 문자들의 집합
1) 문자열 만드는 4가지 방법
(1) 큰 따옴표(")로 양쪽 둘러싸기 "Hello World" (2) 작은 따옴표(')로 양쪽 둘러싸기 'Python is fun' (3) 큰 따옴표 3개를 연속으로 써서 양쪽 둘러싸기 """Python is so funny, You need python""" (4) 작은 따옴표 3개를 연속으로 써서 양쪽 둘러싸기 '''Life is too short, You need python'''
2) 문자열 사용 상황
#(1) 문자열에 작은따옴표/ 큰따옴표 포함시키고 싶을 때 >>> food = "Python's is good" >>> print(food) "Python's is good" #(2) 백슬래시(\)를 사용해서 작은따옴표\큰따옴표 포함시키기 >>> food = 'Python\'s favorite food is perl' >>> print(food) "Python's favorite food is perl" >>> say = "\"Python is very easy.\" he says." >>> print(say) "Python is very easy." he says. #(3)여러 줄인 문자열을 변수에 대입 #(3-1) 줄 바꾸는 이스케이프 코드'\n' 삽입 >>> multiline = "Life is too short\nYou need python" >>> print(multiline) Life is too short You need python #(3-2) 연속된 작은따옴표/큰따옴표 사용하기 >>> multiline = ''' Life is too short You need python ''' >>> print(multiline) Life is too short You need python >>> multiline = """ Life is too short You need python """
3) 문자열 연산하기
문자열 연산 종류 파이썬 예시 더해서 연결 (Concatenation) : + >>> head = "python"
>>> tail = " is fun!"
>>> head + tail
python is fun!곱하기 : * >>> a = "python"
>>> a * 2
pythonpython길이 구하기 : len() >>> a = "Life is good"
>>> len(a)
124) 문자열 인덱싱과 슬라이싱
- 문자열 인덱싱(Indexing)
: 문자열의 각 문자마다 번호를 매겨 가리키는 것
>>> a = "Life is too short, You need Python" >>> a[0] 'L' >>> a[-1] 'n' >>> a[12] 's'
- 문자열 슬라이싱(slicing)
: 한 문자만 빼오는 게 아니라 한꺼번에 여러 문자를 뽑을 때 문자열에서 잘라서 읽는 방식
a[시작 번호: 끝 번호] 끝 번호의 문자는 포함 안됨
>>> a = "Life is too short, You need Python" >>> a[0:4] 'Life' >>> a[19:-7] 'You need' #19 ~ -8 까지의 문자열을 의미 >>> a = "20210129Rainy" >>> date = a[:8] >>> weather = a[8:] >>> date '20210129' >>> weather 'Rainy'
* 인덱싱과 슬라이싱 기법은 뒤의 리스트와 튜플에서도 가능한 기법.
* 문자열 자료형은 immutable한 자료형이기 때문에 슬라이싱 기법을 사용하여 새로운 문자열을 만들 수 있음.
>>> a = "Pithon" >>> a[:1] 'P' >>> a[2:] 'thon' >>> a[:1] + 'y' + a[2:] 'Python' # a 문자열의 Pithon 자체는 변경 안됨.
5) 문자열 포매팅(Formatting)
- 크게 3가지
1. %s, d와 같은 포맷 코드 사용
2. format 함수 사용 .format()
3.f-string formatting f' '
(5-1) 포맷 코드
코드 설명 %s 문자열 %c 문자 1개 %d 정수형 %f 부동 소수 %o 8진수 %x 16진수 %% Literal % (문자 '%' 자체) >>> "I eat %d apples." %3 I eat 3 apples. >>> "I eat %s apples." % "five" I eat five apples. >>> number = 10 >>> day = "three" >>> "I ate %d apples, so I was sick for %s days." %(number, day) I ate 10 apples, so I was sick for three days.
* %s 의 코드는 아래와 같이 어떤 형태의 값이든 문자열로 변환하여 넣을 수 있다.
>>> "rate is %s" %3.234 rate is 3.234
* 포매팅 연산자 %d 와 %를 같이 쓸 때는 %%를 쓴다
>>> "Error is %d%%." % 98 Error is 98%.
- 정렬 및 소수점 표현 포맷코드
정렬과 공백 >>>"%10s" % "hi"
' hi'
>>>"%-10sjane" % "hi"
'hi jane'
#hi + 공백 8개(전체길이 10개) + jane소수점 표현하기 >>>"%0.4f" % 3.42134234
'3.4213'
>>>"%10.4f" % 3.42134234
' 3.4213'
#공백 4개 + 3.4213 (전체길이 10개)(5-2) format 함수를 사용한 포맷팅 (크게 3가지)
* 2개 이상의 값을 넣을 경우 문자열의 {0},{1}과 같은 인덱스 항목이 format 함수의 입력값으로 순서에 맞게 바뀐다.
즉, {0},{2}로 넣으면 인덱싱이 제대로 안되었기에 에러.(1) 숫자 바로 대입 >>> "I eat {0} apples".format(3) I eat 3 apples (2) 문자열 바로 대입 >>> "I eat {0} apples".format("five") I eat five appels (3) 숫자 값을 가진 변수 대입 >>> number = 10 >>> day = three >>> "I eat {0} apples. so I was sick for {1} days.".format(number, day) I eat 10 apples. so I was sick for three days.
- format 함수활용 예시
- 이름으로 넣어 문자열 표현
: {name}의 형태를 쓴다면 반드시 format 함수에 name = value 의 형태의 입력값이 있어야한다.
>>> "I ate {number} apples. so I was sick for {day} days.".format(number = 10, day = 3) I ate 10 apples. so I was sick for 3 days.
- 인덱스와 이름 혼용
>>> number = 10 >>> "I ate {0} apples. so I was sick for {day} days.".format(10, day = 3) >>> "I ate {0} apples. so I was sick for {day} days.".format(number, day = 3) I ate 10 apples. so I was sick for three days.
- 왼쪽, 오른쪽, 가운데 정렬, 공백 채우기
왼쪽 정렬 >>> "{0:<10}".format("hi") 'hi ' 오른쪽 정렬 >>> "{0:>10}".format("hi") ' hi' 가운데 정렬 >>> "{0:^10}".format("hi") ' hi ' 공백 채우기 >>> "{0:=^10}".format("hi") '====hi====' >>> "{0:!^10}".format("hi") '!!!!hi!!!!'
- 소수점 표현, {,} 문자 표현
#소수점 표현하기 >>> y = 3.42134234 >>> "{0:0.4f}".format(y) '3.4213' #{ } 문자 표현하기 >>> "{{ and }}".format() '{ and }'
(5-3) f 문자열 포맷팅
: 파이썬 3.6버전부터 f 문자열 포매팅 기능이 사용 가능하다.
다음과 같은 문자열 앞에 f 접두사를 붙이면 f 문자열 포매팅 기능을 사용할 수 있다.
>>> name = "홍길동" >>> age = 30 >>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.' 나의 이름은 홍길동입니다. 나이는 30입니다.
* f 문자열 포맷팅은 위와 같이 name, age와 같은 변수 값을 생성 후 참조할 수 있다.
또한 f 문자열 포매팅은 표현식도 지원하므로 다음과 같은 것도 가능하다.
>>> age = 30 >>> f'나는 내년이면 {age + 1}살이 된다.' 나는 내년이면 31살이 된다.
* f 문자열 포매팅에서의 정렬과 공백 채우기는 앞에 f를 붙이고 '' 으로 에워싸면 된다.
>>> f'{"hi":<10}' #왼쪽 정렬 'hi '
6) 문자열 관련 함수
문자열 관련 함수 종류 파이썬 예시 문자 개수 세기 (count) >>> a = "hobby"
>>> a.count('b')
2위치 알려주기-1 (find) >>> a = "Python is the best choice"
>>> a.find('b')
14
#문자열에서 b가 처음 나온 위치
>>> a.find('k')
-1 #찾는 문자가 존재하지 않으면 -1 반환위치 알려주기-2 (index) >>> a = "Life is too short"
>>> a.index('t')
8
#찾는 문자가 존재하지 않으면 오류 발생문자열 삽입 (join) >>> ','. join('abcd')
'a,b,c,d'
#join 함수는 리스트, 튜플도 입력으로 사용 가능
ex) >>> ','. join(['a', 'b', 'c', 'd'])
'a,b,c,d'
#단, 튜플 자체가 변하는 것이 아니라 각 항목을 이어서 출력.소문자 -> 대문자 (upper) >>> a = "hi"
>>> a.upper()
'HI'대문자 -> 소문자 (lower) >>> a = "HI"
>>> a.lower()
'hi'왼쪽 공백 지우기 (lstrip) >>> a = " hi"
>>> a.lstrip()
'hi'오른쪽 공백 지우기 (rstrip) >>> a = "hi "
>>> a.rstrip()
'hi'양쪽 공백 지우기 (strip) >>> a = " hi "
>>> a.strip()
'hi'문자열 바꾸기 (replace) >>> a = "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'문자열 나누기 (split) #공백 기준으로 문자열 나눔
>>> a = "Life is too short"
>>> a.split()
['Life', 'is', 'too', 'short']
# : 기준으로 문자열 나눔
>>> b = "a:b:c:d"
>>> b.split(":")
['a', 'b', 'c', 'd']
#나눈 값은 모두 리스트에 저장'Computer Science🖥️ > Python' 카테고리의 다른 글
sort, sorted 의 차이 (0) 2021.08.01 파이썬 배열(array)은 list (0) 2021.06.12 이터러블(iterable) & 이터레이터(iterator) 차이 (0) 2021.05.31