파이썬의 주 원인 오타
1. 스펠링 ex) append -> attend 와 같이 syntax 에러인경우 오타 확률 높음
2. .과 , 의 혼동 헷갈림 -> , 쉼표 여백이 있으면 쉼표 점은 없음
3. () 괄호 비대칭 -> np.array([[1,2,3],[4,5,6])
syntax error 밑에줄에 뜸
4. : ; 콜론 , 세미콜론
5. 조건문 반복문
자료구조 : 리스트 / 튜플 / 집합 / 딕셔너리
리스트 : [] List 순서가 있음 (index, 순서O)
ex) a= [1,2,3,4,5] 3,4,5 를 끄집어내면(슬라이싱)
★★★(훈련)슬라이싱 : 김밥썰기 = 칼질위치표현점 + 간격표현
a[1:4] , a[1:-1] 0,1,2,3,4,5 칼질을 앞에서 하면 된다 a[0:0:0] 시작점 , 끝점 , 몇칸씩
-리스트 내 원소 추가/삭제 메서드 : 3추 4삭 (상추 사삭) + 유용한 메서드
- 추가 : (AIE) append, insert, extend
- append = 하나(a)를 맨 뒤(end) 에 추가 = a + pp = end ex) a.apend(10) = [1,~,9,... 10]
- insert = 하나를(i) 원하는 안 쪽에(in)
- extend = 여러개를(e) 맨 뒤에(end) = e + xt + end
append , expend 차이 갯수기 때문에 2개이상 데이터를 넣을때는 expend 를 쓰는게맞다.
ex) expend([66,77)]
append([5,4] x -> append(5) 무조건 하나만 !
- 삭제 : (RPCD) remove, pop , clear , del
- remove = 이름(re)을 명시해서 지운다(리무버)
- pop = 인덱스(p)를 명시해서 뽑아낸다.(눈썹 pop기)
- clear = 변수 내 데이터 전부 삭제
- del = 변수 삭제
a.clear() vs del(a) : 장난감 통에 장난감이 다 없어지냐, 장난감 통 자체가 없어짐
튜플 : () tuple : 수정 할 수 없다
집합 : {} set 중복을 허용하지 않음 , 순서가 없다
-set : 중복제거용으로 활용(set으로의 형변환) + 집함메서드(합집합 , 교집합 등)
딕셔너리 : {} 사전(key,value가 존재)
1) 키가 main이라는 관점 2) 삭제메서드는 있지만 추가메서드는 없다.
3)추가는 단순히 선언을 통해 fruit['자두'] = 500
4) 없으면 생기고 , 있으면 바뀐다.(덮어쓰기)
5) 키, 벨류 목록 조회 : a.keys() , a.values()
제어문 ( 조건문 , 반복문)
조건문 - if /elif/else , 반복문 - for / while
- 조건문에는 조건절과 종속절이 있다.
- if문 정번역
if a>5: --> (번역) 만약 A가 5보다 크다면(x) 해당 조건이 참이라면? (o) , 조건부의 return 값이 1(참)이라면
print(a)
bool(1) bool(-1) bool(0) 참 , 참 , 거짓
bool('0') bool('스페이스바') bool('null') 참 , 참 , 거짓
bool([0]) bool([' ']) bool([]) 참 참 거짓
-2개 이상의 조건을 처리해야 하는 경우 : 3가지 확인
1) A조건이 참일 때 B를 확인 해야 하는 경우
if A:
if B:
2) A조건이 거짓일 때 B를 확인 해야 하는 경우
if A:
elif B:
3) A조건이 참이든 거짓이든 상관없이 B를 확인해야 하는 경우
if A:
if B:
반복문은 리스트를 반복하는 것이다.
A = [1, 2, 3, 4, 5] - > print(a[0]) print([1]) print([2]) print([3]) print([4])
for i in 반복할대상(리스트):
반복시행할 코드
for i in a:
print(i)
for i in range(10): # range(10) == [0, 1, 2, 3, 4... 9]
- 반복문 코드는 '다른시행간 규칙 발견' 가 핵심이다
1) 다른시행가 규칙발견 -> 2) 규칙을 수식화 -> 수식을 코드화
- 제어문을 통해 정의하는 논리력
1) 2개이상의 조건 유형판단
2) 다른 시행 간 규칙 발견 -> 수식화
3) 시행 간 순서 판단 : 순서도
내포용법
내포 용법 : A 안에 B 를 집어넣는 용법 : 자료구조 안에 제어문을 집어넣는 방법
- 용도(왜 쓰는가?) : 자료구조를 생성하기 위해, 편하게
a = [1,2,3,4,5....1000]
a=[]
for i in range(1000):
a.append(i+1)
- 고작 리스트 생성하려고 3줄이나 써야한다니
a= [i+1 for i in range(1000)]
- for문과 함께 if문이 내포될 수 있다.
b = [1,3,5,7,9,99]
b=[]
for i in range(1000):
if i%2 ==1;
b.append(i)
b=[i for i in range(1000) if i%2==1]
- for문 , if문과 함께 else문이 내포될 수 있다.
c=[1,-2,3,-4,5,-6,7,-8,9,-10
for i in range(100):
c.append(i)
else:
c.appned(-i)
c= [i if i%2 == 1 else -i for i in range(100)]
d= ['가','나','다']
d=[]
for i in range(3):
if i ==0:
d.append(가)
else
if i==1:
d.append(나)
else
d.append(다)
d= [가 if i ==0 else 나 if i==1 else 다 for i in range(3)]
e = {사과 : 1000, 배 : 2000}
e= {} # 빈딕셔너리; 빈셋 = set()
key_list = [사과, 배]
for i in range(2):
e[key_list[i]] = (i+1)* 10000
e = {key_list[i] :(i+1)*10000 for i in range(2)}
함수
함수 : (수학)입력과 출력의 관계 -> (코드) 입력을 받아 출력이 나오도록 만드는 코드
(직관적 정의) 함수는 '코드'다
a=5
print(a) 결과 : 5
b=[]
b.append(5) 결과 : b=[5]
함수의 용도(왜쓰는가) : 코드를 재사용하기 위해
- 함수의정의
def 함수이름():
재사용하고자 하는 코드
- 두개의 입력값을 합한 결과를 리턴하는 함수를 만들어보자
def sum(input1, input2):
sum= input1 + input2
return sum
- 함수의 사용(호출): 이름을 호출해서 사용하면 된다.
sum(1, 2) #함수의 입력값을 맞춰서 호출하면 된다.
- 함수의 유형 : 4가지
1) 입력 o 출력 o (가장 일반적인 유형)
2) 입력 o 출력 x
3) 입력 x 출력 o
4) 입력 x 출력 x
- 람다함수 : lambda = def 함수의 축약버전 = 간단함수, 1줄함수
함수이름 = 람다 입력값, 입력값 : return 값
sum = lambda input1, input2 : input1 + input2
클래스
클래스 : 변수와 함수를 재사용하기위해 구조화하는 용법
- 절차식 프로그래밍 vs 함수형 프로그래밍 vs 객체지향형 프로그래밍
class ml_model():
def __init__(self, ): #(초기화함수)이닛함수는 재사용할 변수를 선언해주면 된다
self.변수1=
self.변수2=
def fun1(self, input): # fit()
def fun2(): # predict()
ML1= ml_model() #호출 == 객체 생성
- init은 클래스 호출하는 즉시 실행되는 코드
- 왜 init 함수 안에 변수 선언을 하는지 이해가 된다.
- self라쓰고, 객체라 읽는다.(객체명으로 바꿔서 읽어보자)
- 객체 = 인스턴스 = self ( 객체는 self 입니다 )
- 클래스 안에는 변수와 함수가 있다.
- 변수 : 인스턴변수와 클래스 변수
- 함수 : 인스턴스함수와 클래스함수, 스태틱 함수
For 문을 중단하는 두가지 메서드
1)brake - 루프 자체를 종료
2)Continue - 해당 루프는 중단하고 , 다음루프로 continue
ex) for 1 in range(10)
if i==1
continue:
0,2,3,4,5,6,7,8,9 만 출력한다.
파이썬 클래스 상속
class Bumo():
class janye(Bumo): <-- 이런식으로 상속을 받는다
super(). <- 부모님은 수퍼맨 , 부모로부터 상속받는
훈련할 목록
리스트 슬라이싱
리스트 3추4삭
딕셔너리 추가 삭제 변환
if문 정번역을 통한 조건문 코드 작성
- a라는 리스트가 있다고 가정. a가 빈리스트가 아니라면 print(a) 코드 작성해보자
- 유형별 참/거짓 구분 : 존재한다 ==참 , 없다 == 거짓
- a가 빈리스트가 아니라면 => if a: 비어있지 않다면 == 존재한다면
- a가 숫자라고가정. a가 0이 아니라면 -> 숫자가 존재한다면 -> if a: -> a의 결과가 참이라면
- a가 문자열이라고 가정. a가 ' ' (null)이 아니라면 -> if a: -> a의 결과가 참이라면
논리적 사고력 기반의 반복문 활용 코드 작성
- 다른시행간 규칙발견 -> 규칙수식화 -> 코드화
- 내포용법 이용해서 리스트 / 딕셔너리 선언하기
- 함수의 유형별 선언/사용(호출)하기
- 입력값에 default값 설정하기
- 입력값에 가변인자로 설정하기
- 지역변수와 전역변수 비교하기
- 람다함수 사용하기/선언하기
클래스 선언 / 사용하기 + 클래스 상속받기
'Python' 카테고리의 다른 글
파이썬 위치 기반 매개변수, 키워드 기반 매개변수 (0) | 2024.03.07 |
---|---|
[파이썬] 웹 프로그래밍 (0) | 2021.02.07 |
[파이썬] MySQL (0) | 2021.02.06 |
[파이썬] 기본 네트워크 & 데이터 처리 (0) | 2021.01.31 |
[파이썬] 자료규조 (0) | 2021.01.31 |