01_ 복습
\n 줄바꿈
\t 탭
\\ 진짜 백슬러시(백슬러시 하나 출력)
\' or \" 작은 따옴표 하나, 큰 따옴표 하나
- error
5/0 - > Zero Division Error
NameError: name 'x' is not defined 변수를 선언한 적 없을 때 발
KeyError: 123 없는 key를 호출하려고 하면 error가 발생
문자열
- 문자열 내장 함수 (자연어처리 데이터 전처리 시 많이 활용함)
* 문자 수 세기: 변수.count('element') element = 철자, 단어, 문장 가능
* 변수.find('e') 존재할 때 index 위치 숫자 출력
존재 X -1(False) 출력
* 변수.index(e) 존재O index 위치 숫자 출력
존재X error 발생, Value Error
* 대소문자 확인: 변수.isupper() 대문자인가? True/False
변수.islower() 소문자인가? True/False
※ 대소문자 섞여 있을 때, False 출력됨
* 대소문자 변경
ㄴ 변수.upper() 대문자로 변경
ㄴ 변수.capitaliza() 앞글자만 대소문자 반대로 변경
ㄴ 변수.lower() 소문자로 변경
* 기타
isalnum - 숫자 혹은 알파벳으로 구성 여부, 특수문자 포함 시 False 출력
isalpha
isascii - ASCII 아스키
isnumeric - 숫자 관련
isdecimal - 숫자 관련
isdigit - 숫자 관련
isspace - 공백입니까 ' '.isspace(), ' \n'.isspace() , '\t'.isspace() >>> True
* 공백 제거 .strip()
ㄴ .lstrip 문장 왼쪽 공백 제거
ㄴ .rstrip 문장 오른쪽 공백 제거
* 문자열 나누기 .split() 공백 기준으로 나누어 리스트 형태로 만들어 줌, 잘라줌
ㄴ .split(' - ') 괄호 안에 문자 입력 시 입력값 기준으로 나눠 줌
* 문자열 바꾸기 .replace()
자료형(data type)의 연산
- 문자열 곱할 때 int형만 사용 가능 float 불가.
변수와 자료 구조
- 변수(variable, 변하는 것) = data를 담는 통
- = assignment(할당), 선언
- 변수엔 특정 고유한 식별 코드가 있음, 코드는 id를 보고 알 수 있음
ㄴ 변수에 할당된 값을 바꾸면 변수명은 동일해도 id가 바뀜
- 변수는 한 줄에 여러 개를 동시에 할당할 수 있음
ㄴ name , height = 'Tom', 178
- 기존에 존재하는 키워드(예약어)를 사용하지 않는게 좋음.
ㄴ int = something -> 향후 작업 시 error 발생, 향후 int()함수 사용 불가
ㄴ 키워드(예약어)일 때, 글자 색상이 변경되므로 구분 필요(단, 모든 예약어가 바뀌진 않음)
- 암묵적 규칙
ㄴ snake case(snake_case) , camel case(camelCase), pascal case(PascalCase) 등 (카멜, 파스칼 혼용 경우 존재)
ㄴ 함수나 변수 snake 사용 , class 는 pascal 사용
ㄴ "_"언더바로 시작하는 변수 사용 X
- 자료 구조(data structure): 여러 데이터가 들어있는 큰 창고 (컨테이너)
- 기본적인 네 가지 구조(built-in container/빌트인 컨테이너)
ㄴ list, dict, set, tuple
* 리스트(list)
- 대괄호 [ ] 사용하여 list 선언. 각 요소를 element, item이라고 지칭
- type : class 'list'
- 각 element, item 에는 거의 모든 것이 다 들어갈 수 있음
ㄴ 공백, null, 숫자, 문자열, 혼합, bool, int, function(ex. print)
ex. f = [a, b, 34, True, print]
f[4]
>>> <function print>
f[4]("Hello world")
>>> Hello world
ㄴ 리스트 안에 리스트 넣을 수 있음 ex. e = [1, 2, ['life', 'is', 0.1]] # item 개수는 3개
- list에 새로운 데이터로 바꾸는 방법: 해당 인덱스에 새로운 데이터를 assign.
- list slicing: a[start:end:step] 같은 형태로 사용
ㅇ리스트 붙이기
ㄴ + 를 사용하면 list가 붙어 새로운 list 만들 수 있음
ㄴ + 대신 .extend() 사용해도 같은 기능함
ㅇ 리스트에 데이터 추가
ㄴ .append(item)사용 시 맨 뒤에 item 추가됨 (자주 사용)
ㄴ .insert(위치, item)사용 시 정해진 위치 앞에 item 추가 가능 (알고리즘 공부 시)
ㅇ 리스트 데이터 삭제
ㄴ del 위치 알고 있을 때, 위치 기재하여 삭제 >>> del 변수[위치] del []
ㄴ remove 위치 대신 item 기입하여 삭제 >>> 변수.remove('이름') .remove( )
ㄴ .pop() 가장 뒤에 있는 아이템을 삭제 >>> 변수.pop()
※ 변수.pop(index위치) >>> 특정 index의 item 숨김/뽑아냄(버리지 않고 다시 돌려줄 수 있음)
ㅇ 리스트 길이(length) 알기 : len(변수)
ㅇ 리스트 내부에 item 존재 여부 확인 : in / not in >>> True / False
ㄴ print(item in or not in 리스트명)
ㅇ 리스트 내부 특정 item 의 개수 count : 리스트명.count('item')
※ string & list : 1차원적으로 연속적인 성격 시퀀셜sequential하다고 표현, string과 list는 sequential data라고 부름
* 스트링 특징
- 스트링도 len 사용 길이 구하기 가능
- 슬라이싱 가능
- append, 추가 불가능, but + 사용하여 붙일 수 있음
- data 교체 불가
- del 사용 삭제 불가
ㅇ 리스트 정렬(다른 type 데이터 혼재되지 않아야 함)
ascending 어센딩 = 오름차순
descending 디센딩 = 내림차순
- 리스트명.sort() #원본 바뀜
ㄴ 리스트명.sort(reverse=True) reverse를 True로 하면 방향이 반대가 됨
- 리스트명.sorted() #원본 유지됨
*복습 list 파이썬 기초 300제(51~60)
ㄴ55. 스플릿과 배트맨 삭제하기, del [index] 사용 한번에 삭제,
* 딕셔너리 Key(단어) Value(내용/값)
dict = {key : value, key : value}
item = Key(단어) and Value(내용)
key : 숫자 or 글자
value : list와 유사, 아무거나 들어감
<class 'dict'>
딕셔너리의 key만 출력 : .keys()
list처럼 [ ]사이에 값을 넣어서 불러올 수 있지만,
[ ]에 들어가는 것은 index가 아니라 key 다
- dict에서 데이터 변경 : key에 새로운 value를 assign해주면 값이 변경됨.
리스트는 인덱스 입력, 딕셔너리는 value할당
# 이렇게도 가능, 연산,
d = {'a': 123, 'c': 0}
d['a'] = d['a']/10
print(d)
>>> {'a': 12.3, 'c': 0}
- 데이터 새로 추가: dict[key] = value
- 데이터 삭제: del d['key']
- 간단히 표현
score['영희']['국어'] = score['영희']['국어'] + 4
>>> score['미영']['국어'] += 4
- dict 뒤에 추가: score['tom'] = {'영어' : 95, '수학' : 100, '국어' : 47}
print(d명칭.keys()) #key를 불러옵니다. 뒤에 s와 ()가 붙습니다.
print(d명칭.values()) #value를 불러옵니다. 뒤에 s와 ()가 붙습니다.
print(d명칭.items()) #item(key&value)을 불러옵니다. 뒤에 s와 ()가 붙습니다.
-- dict 안에 해당 키가 있는지 확인하는 방법은 in을 쓰면 됨
>>> print('a' in d.keys())
ㄴ print(d.keys() in 'a') #반대로 쓰지 않게 유의
.update() 업데이트 함수 사용 시 딕셔너리에 또다른 딕셔너리 추가 가능
* dict 파이썬 기초 300제 복습(80~100)
ㄴ 뒤에 추가해야할 정보를 따로따로 다른 줄에 기재하여 추가함
ice = {"메로나": 1000, "폴라포": 1200, "빵빠레": 1800}
ice["죠스바"] = 1200
ice["월드콘"] = 1500
print(ice)
ㄴ 87. dict value 가져오기 print(ice['key'])
ㄴ 88. value 가격 수정하기
ㄴ 91. 아이스크림명을 키값, (가격, 재고) 리스트를 딕셔너리의 값으로 저장하라 라는 것을 놓쳐서 정답과 다르게 기재함.
>>> 정답
ㄴ 92. 메로나의 가격을 화면에 출력
inventory = {"메로나": [300, 20], "비비빅": [400, 3], "죠스바": [250, 100]}
가격이 출력을 위해 가격 있는 곳의 index 적어줬음
ㄴ 94. 딕셔너리 뒤에 추가
ㄴ (오답) 97. value 의 총합을 구하기
icecream = {'탱크보이': 1200, '폴라포': 1200, '빵빠레': 1800, '월드콘': 1500, '메로나': 1000}
나의 답: 원하는 답은 출력했으나 엄청 복잡하게 풀었음..
정답 : sum() 활용하기
print(sum(icecream.values()))
ㄴ(오답) 99 두 개의 튜플을 하나의 딕셔너리로 변환하기,(zip과 dict)
※ 두 개의 리스트를 딕셔너리로 변환할 때도 동일한 방법 사용
튜플(tuple) 특성 : read only
리스트와 비슷, 선언한 이후 변경할 수 없는 데이터(immutable)
소괄호 ( ) 사용
b = 'a', 'b', 'c' #괄호를 쓰지 않아도 튜플로 선언
- 새롭게 만들어지는 변수의 이름을 덮어 쓰면 마치 원본이 늘어난 것 처럼 할 수 있음
(id 조회 시 id가 달라지는 것을 확인할 수 있음)
- 변경 불가능한 데이터 구조라서 데이터를 추가 불가
insert, append, del, extend, remove, pop, clear, ,,, 사용 불가
-언패킹 : 리스트, 튜플, 세트 해체하는 것
세트 set(집합)
set는 수학의 집합과 같다. 크게 두가지 특징이 있음
1. 중복이 없다.(없어진다)
2. 순서가 없다.(정렬되어 있지 않다, indexing, slicing이 불가)
- set의 중복 제거 기능때문에 list에서 set으로 변경 후 다시 list로 바꾸는 식의 방법을 자주 사용
- item 추가 : .update() '문자열'은 쪼개짐 , [ ] , boolean 숫자로 변환됨,
※ True 1, False 0 으로 인식하여 True와 1 존재 시 먼저 있는 것만 살아남고 뒤에 있는 중복건은 없어짐.(중복 삭제)
- 아이템 삭제 : .remove()
- 주의점
ㄴ 대소문자 구분, 스페이스 구분 후 중복 제거, 순서 섞임
ㄴ list 나 string 이나 tuple 내부의 중복을 제거 가능
>>> ['cherry', 'durian', 'banana', 'apple']
- set 세트 연산자
.Union (합집합/유니언) : | :두 집합의 요소를 더한 것
.Intersection (교집합/인터섹션) : & :두 집합의 요소 중 공통된 것
.Difference (차집합/디프런스) : - :한 집합에서 다른 집합의 요소를 제외한 것
ㄴ (주의) 순서의 영향 받음
Symmetric Difference (대칭차/ 시메트릭 디퍼런스) (사용빈도 낮음) : ^ :겹치치 않는 요소들
- 포함 관계
부분집합(subset 서브셋) : 한 집합이 다른 집합에 완전히 포함되거나 동일한 것
- 리스트[ ], 튜플 ( ), 세트{ } 서로 변경 가능, 모두 일렬 나열된 데이터 구조
※ 딕셔너리는 변경하면 key만 남아버림. --> 그래서 잘 사용하지 않음.
- 코딩용 폰트: d2coding
- 향후 STUDY 계획
파이썬 기초
데이터 분석
머신러닝 : 이론 어려움, 실습 쉬움
추천 시스템 : 머신러닝의 일부(분류/회귀 중 특화된 부분)
------------------
딥러닝
서버 환경 구축(구글 클라우드)
객체 지향
웹 개발
- 복습 방법
1. 프로그래머스
코테연습 > 코딩 기초 트레이닝 >
2. 파이썬 기초 300제
3. 점프 투 파이썬
'AI, 머신러닝, 딥러닝, 데이터 분석' 카테고리의 다른 글
[논문 요약] 추천 시스템 기법 연구동향 분석 - 콘텐츠 기반 접근 방식 (1) | 2023.08.04 |
---|---|
[추천 사이트] Paperwithcode AI 논문과 코드가 있는 사이트 (0) | 2023.08.01 |
01_Basic (0) | 2023.06.26 |
파이썬 300제 복습(1번~20번 변수~40번 문자열까지) (0) | 2023.06.22 |
초보자를 위한 파이썬 300제, 함수 221번~ (0) | 2023.05.31 |