본문 바로가기
Python

[파이썬] python review

by AI미남홀란드 2022. 10. 25.
728x90

파이썬의 주 원인 오타

 

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값 설정하기

- 입력값에 가변인자로 설정하기

- 지역변수와 전역변수 비교하기

- 람다함수 사용하기/선언하기

클래스 선언 / 사용하기 + 클래스 상속받기

 

728x90