[20211014] 제로베이스 알고리즘 자료구조 51일 대비반 DAY 03
junh0328 opened this issue · 0 comments
junh0328 commented
2021.10.14, day 03
python data type (파이썬 데이터 타입 종류)
- Boolean
- Numbers
- String
- Bytes
- Lists
- Tuples
- Sets
- Dictionaries
Boolean
v_bool = True # False, 첫 문자는 대문자로 작성해야 한다
print(type(v_bool))
>>>
<class 'bool'>
Numbers
v_int = 7
v_float = 10.2
print(type(v_int))
print(type(v_float))
>>>
<class 'int'>
<class 'float'>
String
v_str= 'Goody Boy'
print(type(v_str))
>>>
<class 'str'>
Bytes
Lists
v_list = [3, 5, 6] # 다른 언어(js)에서는 배열이라고도 한다
print(type(v_list))
>>>
<class 'list'>
Tuples
v_tuple = 3, 5, 7
print(type(v_tuple))
>>>
<class 'tuple'>
Dictionaries
v_dict = {
"name": "Junhee",
"age": 25
}
print(type(v_dict))
>>>
<class 'dict'>
① 파이썬 숫자형(Numbers) 및 연산자
+
: 더하기-
: 빼기*
: 곱하기/
: 나누기//
: 나누기 (몫)%
: 나누기 (나머지)**
: 지수연산 (제곱)- 단항 연산자
파이썬 숫자형 및 연산자 사용하기
i1 = 39
i2 = 939
big_int1 = 99999999999999999999999999999999999999
big_int2 = 77777777777777777777777777777777777777
f1 = 1.234
f2 = 3.784
f3 = .5 # 0.5
f4 = 10. # 10.0
print()
print(i1*i2)
print(f1 ** f2)
print(f3+i2) # 결과값이 실수기 때문에 자동으로 형변환이 된다!
print()
result = f3 + i2
print(result, type(result))
# float 과 int를 연산할 때
a = 5.
b = 4
c = 10
print(type(a), type(b))
result2 = a+b
print(result2)
# 형 변환
# int, float, boolean, complex(복소수)
print(int(result2)) # float > int
print(float(c)) # int > float
print(complex(3))
print(int(True)) # 1로 변환
print(int(False)) # 0으로 변환
print(int('3'), type(int('3'))) # 문자열을 정수로 변환
y = 100
print('before y:', y)
y += 100
print('after y:', y)
# 수치 연산 함수
print('abs:', abs(-7)) # 절대값 absolute
n, m = divmod(100, 8) # 몫은 n으로 나머지는 m으로 보내주는 함수
print(n, m)
# math 모듈이 제공하는 정적 메서드
print(math.ceil(5.1)) # 올림
print(math.floor(3.74)) # 버림
print(math.pi) # 파이값 출력
② 파이썬 문자형 관련 연산자
- 문자열 생성, 길이
- 이스케이프 문자
- 문자열 연산
- 문자열 형 변환
- 문자열 함수
- 문자열 슬라이싱
문자열 생성, 길이
str1 = "I'm a boy"
str2 = 'Nice man'
str3 = ''
str4 = str('')
print(len(str1), len(str2), len(str3), len(str4))
이스케이프 문자
escape_str1 = "Do you have a \"big collection?\""
escape_str2 = 'Do you have a "big collection?"'
escape_str3 = 'Tab\tTab\tTab'
print(escape_str1)
print(escape_str2)
print(escape_str3)
Raw String
# Raw String: r'' / r"" 작은 따옴표 또는 큰 따옴표 내부에 있는 이스케이프 처리는 이스케이프 처리가 되지 않고 그대로 출력된다
raw_s1 = r'C:\Programs\Test\Bin'
raw_s2 = r"\\a\\a"
print(raw_s1)
print(raw_s2)
멀티라인
# 멀티라인: 변수 선언 이후에 '\' 기호가 나온다면 문자열을 enter키를 포함하여 다음줄에 나온다는 것을 의미한다
multi = \
"""
문자열
멀티라인
테스트
"""
print(multi)
문자열 연산
# 문자열 연산
str_o1 = '*'
str_o2 = 'abc'
str_o3 = 'def'
str_o4 = 'NiceMan'
print(str_o1 * 10)
print(str_o2 + str_o3)
print(str_o1 * 3)
# 한쪽만 문자열일 경우에는 * 연산자를 만나 형변환을 하지만 * 연산자의 좌항과 우항이 모두 문자열일 경우에는 에러가 난다
# print('a' * 'a') 좌항 우항 모두 문자열
# print(str_o1 * '3') 좌항 우항 모두 문자열 > TypeError: can't multiply sequence by non-int of type 'str'
in 연산자
print('a' in str_o4) # True, str_o4 안에 'a' 라는 문자열이 있니?
print('m' in str_o4) # False, 대소문자를 구분한다
print('m' not in str_o4) # True, str_o4 안에 'm' 이라는 문자열이 없니?
문자열 형 변환
print(str(77)) # 숫자를 str()로 하여금 문자열로 변환함
print(str(77) + 'a') # 결론적으로 문자 + 문자가 가능하게 됨
print(str(10.4))
문자열 함수
a = 'niceman'
b = 'orange'
print(a.islower()) # a 문자열이 소문자로 되어 있니?
print(a.endswith('n')) # a 문자열의 끝 글자가 n으로 끝나니?
print(a.capitalize()) # Niceman > 첫 글자만 대문자로 변경
print(a.replace('nice', 'holy')) # 첫 번째 파라미터에 들어온 문자열을 두 번째 파라미터에 들어온 문자열로 대체
# 리스트 함수
print(list(b)) # b 문자열을 리스트 형으로 변환 ['o', 'r', 'a', 'n', 'g', 'e']
print(list(reversed(b))) # b 문자열을 리스트 형으로 변환한 후 뒤집음(reversed)
문자열 슬라이싱
문자열의 범위를 지정한다 (일부분을 추출한다)
a = '01234567'
print(a[0:3]) # 문자열 a의 0번째 인덱스부터 3번째 인덱스 전까지 (n-1) 까지 나와라 >>> 012
print(a[0:4]) # >>> 0123
print(a[0:len(a)]) # 0부터 문자열 a의 길이 (7) 전까지 나와라
print(a[:4]) # 처음부터 4번째 인덱스 전까지 (n-1) 까지 나와라 >>> 0123
print(a[:]) # 전체 다 나와라
print(a[0:len(a):2]) # 0부터 끝까지 나오는데, 2만큼 건너뛰고 나와라 >> 0246
print(a[0:-2]) # 0부터 (뒤에서부터 -2) 전까지 012345
print(a[::-1]) # 거꾸로 다 나와라 76543210
print(a[::2]) # 0부터 끝까지 2만큼 건너뛰고 나와라 >> 0246
파이썬 자료구조(List, Tuple)
- 리스트 특징
- 튜플 특징
- 인덱싱
- 슬라이싱
- 삽입, 삭제, 함수 사용
리스트 특징
- 순서 o
- 중복 o
- 수정 o
- 삭제 o
리스트 선언
a = []
b = list()
c = [1, 2, 3, 4]
d = [10, 100, 'Pen', 'Banana', 'Orange']
e = [10, 100, ['Pen', 'Banana', 'Orange']]
리스트 인덱싱
Banana를 추출하고 싶을 때
print(d[3]) # 인덱스 3에 위치한 요소 추출
print(d[-2]) # 뒤에서부터 -2번째 요소 추출
print(e[2][1]) # 2차원 베열 내부에서 인덱스 1에 위치한 요소 추출
print(e[2][-2]) # 2차원 배열 내부에서 뒤에서부터 -2번째 요소 추출
리스트 슬라이싱
# 범위를 지정한다 (일부분을 추출한다)
print(d[0:3]) # 인덱스 0 부터 인덱스 3 전까지 (2 까지)
print(e[2][1:3]) # 2차원 배열의 인덱스 1부터 3전까지 (2까지)
print(e[2][1:len(e[2])]) # 2차원 배열의 인덱스 1부터 e[2]의 길이 전까지 >>> len(e[2]) = 3