반응형

본 내용은  fastcampus 딥러닝/인공지능 올인원 패키지 online을 정리한 것이다.

함수의 이행 와 사용

함수 : 코드가 중복된 것을 방지하기 위하여 많이 사용한다.

내장 함수

len(), sum() 등 여러가지 가있다.

 

함수를 정의 할려면 def 키워드가 나온다.

def function_name():

  

 

() -> parameter 인자  파라미터의 데이터 타입을 지정할 필요없다.

 

함수 이름은 제약 사항이 없지만 그래도  무엇을 해야 하는지 예상하는 값으로 하는게 좋다.

예:

def add(x, y):

  sum = x+y

  return sum

 

add(1,2)

 

값을 정확하게 전달해야 한다. 파라미터 개수에 맞게끔 입력을 해주시면 된다.

add()

 

파라미터 (argument)인자

함수내에서 사용되는 변수

 

python에서는 type을 명시할 수 없다. 

장점이면서 단점이여서 주의해야 한다.

 

type을 정확하게 넣어줘야 오류가 안난다.

 

기본 파라미터 

두개로 파라미터 지정할 경우에는 

 

print에도 있다. 

sep , end  등 

sep 구분한다는 점이고 

end는 마지막에 해주는 것이다.

 

기본파라미터에서 주의할 점은 순서에서 중간에 올 수 없다. 

기본파라미터 혼용 할 경우에는 잴 앞에 있으면 오류가 난다.

 

keyword parameter 키워드 파라미터

파라미터에 전달 할 때 , 파라미터의 이름을 명시하여 전달 하는 것

이 경우에는 파라미터의 순서를 무시 할 수 있다.

keyword값을 하고 싶을 때는 통일 하는게 좋다.

def test(x, y ,z):

 

test(x=1, y=2, z=3)

 

return 

함수의 종료를 의미 함수가 끝난다는 것을 의미 호출하는 쪽으로 값을 뱉는 것이다. 

함수가 끝나면서 값을 설정하지 않을 경우 None, 값이 있을 경우 값을 전달한다.

 

multiple return

튜플 형식으로 복수개의 값 리턴 효과 처럼 가능하다. : 값이 여러개 return 가능하다. 

return a,b

 

변수의 범위 variable scope

local 변수 : 코드 블록에서 선언된 변수

global 변수: 가장 상단에서 정의도어 프로그램 종료전까지 유지되는 변수

함수 안에 선언된 변수는 범위가 있다. 변수의 생명 주기가 있다. 임의로 가지는 범위가 있다. 함수 블록 

 

가별길이 인자 variable length argument

전하는 파라미터의  개수가 정해지지 않았다. 고정이 되지 않았다.

처리할 수 있는 파라미터의 개수가 동적이다.

*args: 파라미터를 튜플의 형태로 전달 , args 라고 해도 되고 따른것으로 해도 된다. 습관상 문제로 

  arguments의 줄임말이다.

 

가변길이 keyward parameter

**kwargs: 파라미터를 딕셔너리 형태로 전달(네임드 파라미터) ->dict

 

args로 정하는것이 좋다

def test(*args):

  for i in args:

    print(i)

test(1,10,9)

 

 

def test(**kwargs):

  for key, value in kwargs:

    print(key, value)

 

test(a=1, b=2 )

 

가변길의 함수의 대표적인 예 문자열 포맷 함수

placeholder 어떤 값을 넣을 지 모르겠지만 공간을 비워줘서 값을 여준다.

test = '오늘 온도 : {}도 , 강수 확률은 : {}% 입니다.'.format(25, 30)
print(test)

 

이름 자체를 몇시 가능하다.

test = '오늘 온도 : {temp}도 , 강수 확률은 : {prob}% 입니다.'.format(temp=20, prob=30)
print(test)

 

 

lambda함수

한줄로 간단하게 정의할 수 있는 문법적인 도움

단일문으로 표현되는 익명함수 할줄로 표현된다.

이름이 필요없다.

return keyword필요 없다. return 쓰면 안된다. 

 

람다 정의

ret = lambda a: a*2
ret(2)

입력값과 출력값만 하고 return 할 필요 없다.

 

파라미터 값이 2개일 경우

ret = lambda a,b: a+b
ret(2, 3)

 

간단한 함수 일 경우에는 lambda 함수를 사용할 수 있게 한다.

간결하게 하는 표현이다.

 

 

 

sort()

sort에 key가 있는데 함수이다.

 

def str_len(s):
  return len(s)

strings = ['alice','bob','chakdfjdkfj','alex']
strings.sort()
print(strings)

def str_len(s):
  return len(s)

strings = ['alice','bob','chakdfjdkfj','alex']
strings.sort(key=str_len)
print(strings)

str_len 외부에서 사용안하고 여기에서만 사용한다. 

따로 할 필요 없이 한 줄로 하는 것  

따로 공간 낭비 없이 한줄로 

test = ['za','cdfd', 'addddd' , 'ddd']
test.sort(key= lambda s:len(s))
print(test)

 

filter, map, reduce

filter -> list에서 filtering 한다. 기본 내장함수로 들어간다. 

filter(함수, 리스트) : 함수가 list의 각각 원소로 돌면서 참이면 출력 

원래 리스트에서 짝수만을 가진 것을 filtering한다.

각각의 원소에 even함수를 적용한다. 

def even(n):
    return n% 2 ==0

nums = [1,2,3,4,5,6]
list(filter(even, nums))

위의 것은 공간을 낭비한다.공간 낭비가 있어서 람다로 한다.

nums = [1,2,3,4,5,6]
list(filter(lambda n:n%2 == 0, nums))

 

각각의 값을 제곱으로 할 경우

filter를 하지 않지만 list개수가 변하지 않고 새로운 list가 만들어지는데 mapping한다.

nums = [1,2,3,4,5,6]
list(map(lambda n:n**2, nums))

python3에서는 reduce를 그냥 사용할 수 없다.

 

reduce: 주어진 리스트가 있으면 차례대로 구해서 한개 값만 남긴다.

functools.reduce(함수, 리스트)

주어진 list가 있으면 차례대로 해서 한개 값만 남긴다. 

결과가 하나 나온다.

import functools
a = [1,2,3,4]
functools.reduce(lambda x, y : x-y ,a)

 

문제가 주어지면 입력과 출력을 고려해야 한다.

 

평균구하기

def mean(nums):
    sum_ = 0
    for i in nums:
        sum_ += i
    return sum_ / len(nums)

mean([2,3,5 ])

함수로 한번 하면 구현된 이름으로 여러번 호출 가능하고 

코드의 중복이 없이 코드를 재사용할 수 있다.

 

 

python에는 sum이라는 내장함수가 있다.

def mean(nums):
    return sum(nums) / len(nums)

mean([2,3,5 ])

 

소수는 (1과 자기 자신으로만 나눠지는 수 )

입력 : 양의 정수 1개

출력 : 여부가 출력된다.

소수 , 합성수

def is_prime_number(num):
    for i in range(2, num):
        if num % i == 0 :
            return False
        
    return True
        
is_prime_number(16)
def num_prime(num):
    cnt = 0
    for i in range(2, num+1):
        if is_prime_number(i):
            cnt +=1
    return cnt

print(num_prime(6))

 

모듈의 이해 및 사용과 import 방법

module 필요한 모듈 형태

구현한 내용을 불러서 사용하기 

특정한 것만 import 하고 싶을 경우 from으로 한다.

import math
from math import pi # 특정한 값만 import 한다. 필요한것만 import 할수 있다
from math import *
sin(1)

별명: alias  => as를 이용하여 한다.

import numpy as np

모든 기능을 다하고 싶을 경우 *로 한다.

*를 권장하지 않는다 . 똑같은 것 있을 수 있기 때문이다.

class와 object

List 타입 (class)

실제로 존재하는 객체 (object)

 

클래스 정의 및 사용하기

class: 속성와 동작를 갖는 데이터 타입 : 타입을 정의 하는것 새로운 타입을 정의 

 

class 선언하기

class keyward가 있다.

class People:

   pass

pass 없이 수행하면 문법 오류가 생긴다. class, method에 다 가능

빈 class라도 오류 없이 진행하고 싶을 경우에는 pass라도 해야 한다.

 

lily = People()

 

lily = list() 와 비슷하게 사용한다.

 

모든 타입을 타입의 객체로 생성되였다.

 

__init__ : 생성자 클래스 인스턴스가 생성될 때 호출 됨

self 인잔는 자기 자신을 의미한다.

가장 첫번째로 돌리는 함수

 

class Dog:

  def __init__(selft):

     self.name = 'dog'  #name의 속성이 있다.

 

#생성자에서 self keyword를 해서 생성한다. 

하지만 이 경우에는 동적의 경우가 아니여서 

동적으로 생성하는 것을 변경해야 한다.

 

class Dog:

  def __init__(selft, name):

     self.name = name

 

self 는 그 객체 자체이다.

모두 첫번째에 온다. 

그 메소드가 불리는 자체 자신을 의미한다.

 

메소드는 클래스가 다루자 하는 것을 행동 

자신의 주소

 

 

종속

기존에 정의해둔 클래스의 기능을 그대로 물려반들 수 있다.

코드를 재사용하는 도우미

 

class Qiwawa(Dog):  =>이런식으로 상속 받는다.

 

부모클래스에서 정의 된 것을 다시 정의 => override  재정의 

override 재정의 하는 순간 부모의 메소드가 사라지기 때문에 

사라지지 않게 하기 위하여 super를 사용한다.

super().work() =>부모의 work()를 호출한다.

 

point

2차원 좌표 평면 각 점(x,y)

 

__str__ 지정한데로 출력을 할 수 있다.

예:

    

1+2 이런식으로 바꾸고 싶을 경우

 

 

class Point:
  def __init__(self, a, b) :
    self.a= a
    self.b = b
  def __add__(self , pt):
    new_a = self.a + pt.a
    new_b = self.b + pt.b
    return Point(new_a, new_b)

  def __str__(self):
    return '({}, {})'.format(self.a, self.b)

  def length(self):
    return self.a **2 + self.b ** 2


p1 = Point(3,4)
p2 = Point(1,2)
print(p1)

print(p1 + p2)
print(p1.length())

 

len(p1)으로 하고 싶다.

  def __len__(self):

    return self.a **2 + self.b ** 2

print(len(p1))

 

point에 index 적용하고 싶을 경우에는

pl[0] => point 객체는 index를 지원하지 않아서 __getitem__으로 한다.

  def __getitem__(self, index):
    if index == 0:
      return self.a
    elif index ==1:
      return self.b
    else:
      return -1

 

복소수 클래스

출력을 예쁘게 할려면 str함수를 재정의 한다.

'{}+{}j'.format(self.real, self.img)

 

__mul__이런것은 연산 없이 잘 할 수 있다. 

 

정규표현식

특정한 패턴을 검색가능하다.

복잡한 문자여도 패턴을 하면 쉽게 사용할 수 있다. 

크롤링에서 많이 사용한다. 

 

raw string : 패턴 같은 경우는 많이 사용하다.

문자열 앞에 r이 붙으면 문자열이 구성된 그대로 문자열로 변환

문자열을 return 되는 것이 아니라 특수한 기능을 하기 위해서 그대로 인식하기 위해서 \n 같은 경우에는 그대로 인식하게 한다.

\n이런것 많이 사용할 경우가 있다. 이런것 표현하기 위해서 raw string을 사용한다. 

a = 'abc\n'
print(a)

a = r'abc\n'
print(a)

import re
m = re.search(r'ab','abcdjkjkab')
print(m)
print(m.start())
print(m.end())
print(m.group())

가장 먼저것 나온다.

 

[] 대괄호 문자들의 범위를 나타내기 위해 사용

  - 범위를 나타난다.  

^앞에 있을 경우 아닌것으로 한다.

\d: 숫자

\D: 숫자가 아닌 문자

\s: 공백문자

\S: 공백이 아닌 문자

\w: 알파벳 대소문자 , 숫자  동일  [^0-9a-zA-Z]

\W: non-alpha-numeric문자

. : 모든 문자를 의미한다.

 

 

+ : 한번 이상의 패턴이 생성(최소한 한번은 나와야 한다.)

* : 0번 이상의 패턴이 발생

? : 0번 혹은 1번의 패턴이 발생 , 한번 있거나 없거나 

 

반복 패턴이 있을 경우에는 마지막 까지 나온다. 

greedy하게 동작한다.

 

^ : 맨 시작부터 일치하는 경우 문자열 시작

$ :  맨 뒤부터 일치하는 경우  문자열 끝

 

grouping:

()을 사용하여 그루핑 

group는 1부터 시작한다. 

매칭 결과를 각 그룹별로 분리 가능

 

m = re.search(r'(\w+)@(.+)', 'test@gmail.com')
print(m.group(1))
print(m.group(2))

 

패턴을 생성하고 ()를 이용해서 그룹을 한다.

 

{} -> 중괄호

+, * 반복적인 패턴은 가능하지만 횟수는 불가능하다. 

*, + ,? 을 사용하여 반복적인 패턴을 찾는 것이 가능하지만 , 반복의 횟수의 제한은 불가해서 {} 로 반복의 횟수를 명시한다.

횟수 지정 한다. 

m = re.search('a{2}d' , 'aadddd')
print(m)
m = re.search('a{2,5}d' , 'aadddddddd')
print(m)

{2,5}는 2번 이상 혹은 5번 이하

 

<.+?> => minimum 매칭하게 한다. greedy하게 하는 것이 아니라

{}? {3,5}? => 

 

match 함수 => 검색을 하는데 문자열을 처음부터 검사한다.

검사를 하는데 차원으로 한다. 

search와 동일한데 문자열의 처음부터 검사

search와 비슷하지만 최초로 매칭 되는 것

 

findall => 매칭되는 전체의 패턴을 반환한다.

해당하는것을 전부 매칭 되는 패턴을 찾는다. 

 

sub는 치환시킨다. 문자열 내에서 특정한 문자를 찾아서 치환한다. 

count가 0인 경우 전체를 , 1이상이면 해당 숫자대로 치환한다

re.sub(패턴,이것으로 치환,문자열)

문자열에서 패턴 찾아서 이것으로 치환한다. 

re.sub(패턴,이것으로 치환,문자열,count)

 

 

compile 함수 

동일한 정규표현식을 매번 다시 쓰기 번거러움을 해결

패턴을 입력할 수 있다.

 

중복 리스트 

map 주어진 리스트로 부터 어떤 규칙 혹은 람다에 의해서 새로운 리스트를 생성할 수 있다. 

 

반응형
반응형

본 내용은  fastcampus 딥러닝/인공지능 올인원 패키지 online을 정리한 것이다.

조건문과 반복문

 

01. 조건문 (if, elif, else)활용하기

1. if문

condition 

특정 조건을 만족하는 

 

if 2 >1:

  print('')


print('') => if 와 관계없는 수행코드

 

if의 코드 블록

python에서는 드려쓰기가 매우 중요하다.  아니면 에러가 난다.

 

기본적으로 boolean이 온다.

논리 연산자

and

or

not

 

논리표로 정한다.

 

조건문 : 참 과 거짓

우선순위 NOT > AND > OR

and => 여러개 keywork 동시에 만족

or => 두개중 하나 만족

== => 같을 때

not 혹은 != => 같지 않을 경우 조건을 반전시키고 싶을 경우

 

if문의 기본적인 것은 boolean이 온다.

하지만 python은 모든 타입이 다 올 수 있다.

if 1:

  print('11111')

 

하지만, 정수, 실수 ,문자열 리스트 등 기본 타입도 조건에 사용가능

False로 간주되는 값: 각 타입의 기본값

예를 들어 int -> 0

 

2. else문

if 조건문:

else:

 

if와 else사이에는 어떤 블록도 올 수 없다.

if 조건문:

elif 조건문:

else:

 

nested condition 중첩 사용 깊이가 있다.

if

  if 

  else

else

 

chained condition

if

elif

else

 

depth 기준이 없지만 간결하게 하는 것이 중요하다. 

 

02. 반복문 while 활용하기

특정한 조건에서 할지 안할지 

기본중에서 중요한것 하나 

while문 반복적인 작업을 해주는 것이다.

조건을 만족하면 계속 수행한다.

while 문을 이용해서 list의 item 출력하기

a = [1,10,9]
i = 0
while i < len(a):
    print(a[i])
    i = i+1 ## 없을 경우 무한반복된다.
    
print("finish")

무한루프가 없는 코드를 작성해야 한다.

반복이 끝나는 것을 수행해야 한다.

 

if는 만족하는 코드 블록을 한번만 하고 무한 푸프를 반복하지 않도록 하는 것이 while문이다.

 

무한루프는 프로그램에서 나오지 않는다. 블록에서 빠져나올 수 없다. 

메모리 문제 떄문에 멈출 수 있겠지만 

무한푸프에 있을 경우에는 kernel 재 기동 하면 된다.

 

break 

무한 루프를 중단할 때 사용

continue

break 처럼 반복을 중단하진 하여 빠져나오지 않고 다시 while조건으로 점프함

9보다 큰 경우는 중단시킨다. 

a = [1,10,9]
i = 0
while i < len(a):
    if a[i] > 9:
        break
    print(a[i])
    i = i+1
    
print("finish")

crawling을 할때 많이 사용한다 

webpage가 몇개 있는지 모른다.

 

특정한 경우에 코드를 실행하지 않는다.

a = 7
while a >0:
    a -= 1
    if a == 6:
        continue
    print(a)

특정한 조건일때 수행하지 않을 때 

 

 

03. 반복문 (For ) 활용하기

while은 스스로 제어 해야 한다면 

for문은 순회가 가능한 것을 자동적으로 순회하게 한다.

예: list같은 경우는 자동 적으로 list 를 순회해서 한다.

a= [1,2,3]

for i in a:

  print(i)

 

정수형은 순회가 살 수 없다.

순회 할 수 있다는 것은 index가 있기 때문이다.

순회 할 수 있는 것을 할 수 있다. 

 

dict 의 아이템 출력하기

dict를 순화하면 key만 가져와서 

같이 가져오고 싶을 경우에는 

print(key, a[key])

 

enumerate() : index 와 같이 필요할 떄 

for index, num in enumerate(a):

  print(index, num)

index와 같이 출력하고 싶을 경우에 사용

 

break: 특정 조건에 만족하면 종료한다. 

continue : while문을 수행하는데 현재 상황를 끝내버리겠다.

해당 아이템을 건너 뛰고 싶을 경우 사용 , loop는 계속 하는데 건너 뛰고 싶을 경우에 사용한다.

 

loop 중첩 ->반복문도 중첩해서 사용가능하다.

for 

  for

 

len() => 사용가능하는데 내장함수이다. 

range :

리스트를 쉽게 만들 수 있고 

주언진 값에 값을 반환 하는 데 사용

 

range(1,10,2)

1: 처음의 index

10: 마지막 index <10

2: 2씩 건너 뛰기, 건너 뛰는 개수

 

정렬은 sort()를 사용하여 정렬을 한다.

반응형

'교육동영상 > 01. 딥러닝인공지능' 카테고리의 다른 글

06. 이미지 분석 tensorflow 2.0  (0) 2020.11.25
05. Tensorflow 2.0 Pytorch  (0) 2020.11.24
04. 인공지능에 대한 개념과 준비  (0) 2020.11.23
03. python 함수  (0) 2020.11.19
01. Python Programming  (0) 2020.11.13
반응형

 

본 내용은  fastcampus 딥러닝/인공지능 올인원 패키지 online을 정리한 것이다.

 

파이썬 개발 환경 설정

anaconda 설치  

  python 3.7 

jupyter notebook 

 

anaconda

jupyter 환경에서 하게 된다.

 

파이썬 개발 환경 설정

anaconda 통합 platform이다. 

각 플렛폼 마다 다르다.

다운된 것을 실행 하면 된다. 

install 기본값으로 

anaconda 환경을 기본환경으로 한다는 것만 check하면 된다.

 

Jupyter notebook 설치 및 사용법 소개

New를 하면 언어를 선택 가능 python3로 하면 된다.

 

마우스 클릭하고 esc눌리면

cell 은 실행할 코드나 주석 등을 입력

 

녹색    : 타이핑 가능 입력 모드

파란색 : 명령어를 할수 있다. 명령 모드

 

명령 모드 파란색 

명령어 모드에서 h를 눌리면 키보드 단축키가 나온다. -> help

 

cell추가하면 위에 a

cell 아래 추가하면 b

d 두번 눌리면 지우기

 

shift+ enter : cell 실행하고 아래로 옮긴다.

ctrl+enter: cell 그냥 실행하고 cursor안옮긴다.

alt + enter: cell 실행하고 아래로 추가한다.

 

jupyter notebook cell의 type: 

in 이것은 type은 코드이다.

cell 가지고 cell type에서 markdown으로 바꿀 수 있다.

 

markdown in이 없어졌다.

코드 입력할려면 in이 있어야 한다.

 

markdown은 문서를 만들때 문서와 구조를 한꺼번에 하는것

코드에 대한것 깔끔하게 하고 싶다.

# 큰 title

##

###

####

코드모드에서 m markdown

markdown에서 코드 모드 y

 

**python** bold

*cool* itelity

 

list로 하고 싶을 떄 - 순서가 없는 

- pyton 

 - pandas

- java

 

순서 

1. python

2. java

 

 > 비교 연산자 들여쓰기 하는 

> 파이썬은 재밌다고 하더라.

 

마크 다운 수학식 지원 

$y = 3x$

 

코드 지원

 

 

'''pytonn

'''

 

한글로 link사용

[파이썬](url)

 

타입 및 변수

데이터 타입과 컬렉션

변수 : 데이터를 저장하는 공간, 변수

저장공간에 값을 생성하고 이름을 지정

=(대입연산자)를 사용하여 왼쪽은 변수명, 오르쪽은 데이터가 위치 변수 혹은 값 

 

= 대입연산자

== 비교연산자

 

정수형과 실수형

a = 1
b = 2.1

 

print함수 

값을 확인 하는 함수 

함수는 특정 기능 먼저 구형하여 그 함수를 반복적으로 호출하여 사용가능한 코드 블록 

이름 명명 규칙에서 숫자로 시작하면 안된다.

해당 변수의 값을 출력

, 로 여러 변수를 나열하면 한줄에 출력

기본적으로는 한칸 띄어쓰기 후 출력

#뒤에 오는 거은 주석이다.

각 print사이에는 enter이다.

a = 10

b = 11.4

print(a, b)
print(a, 10, 200, b)

sep: 구분자 , 각 출력할 변수 사이에서 구별하는 역할을 함

end: 마지막에 출력할 문자열

shift+tab을 이용해서 자세한 정보 볼 수 있다.

print(a, b, 10, 100, sep = "*" , end ="!!")

space를 *로 대체 

원하시는 출력으로 출력 가능하다.

변수 값 확인법 

print()함수 사용

변수 값을 코드의 마지막에 위치 시킨 후 실행 

print(a)
print(a, b)
a

print는 출력만 하지 output이 아니다.

마지막 값이 전체 값의 out으로 나온다.

 

변수이름 규칙

대소문자 

숫자는 사용가능하되 숫자로부터 시작하면 안된다.

 

숫자로 시작하면 안되는 이유?

4 = 9
print(4)

이해하기 쉬운 것으로  명시적으로 이름을 하는게 좋다.

 

또 한가지 안되는 것이 있다.

class 사용할 경우 녹색으로 변해서 예약어있다.

for

while

if

elif

else

class

try

excpt

class

#,,,

이런것을 사용하고 싶을 경우에는 

_class = 100

print(_class)

_ 로 사용해야 한다.

 

05. 데이터 

기본 데이터 타입 4가지 int, float, str, boolean

int: a = 10

flot: b = 11.45

type(A)

 

None : 아무런 값을 갖지 않을 때 사용

c => 이렇게는 안된다.

python은 무조건 초기화해야 한다.

변수 생성하고 싶은 데 어떤 값으로 해야 할지 모를떄 

초기화 값을 모를때 

 

정수와 실수

a = 5
b = 4

# 숫자형이면 비교 가능
#결과는 boolean이다.
print( a > b ) #True
print( a < b) #Flase
print( a >= b) #True
print( a <= b) #False
print( a == b) #False
print( a != b) #True

 

c = a>b
c = True
print(type(c))
print(c)

 

 

여러가지 연산을 다 할 수있다.

변수의 값은 대입하기 전에 값은 변하지 않는다.

a = 5
b = 4

print(a+b)
print(a*b)
print(a-b)
print(a/b)
print(a%b)
print(a**b)

 

a= 5
b = 4

a + b*4

a+b 를 먼저 하고 싶을 경우에는 (a+b) * 4

 

 

연습문제

a = 9
print(a)
print(a-3)
print(a)

 

변수의 값은 대입이 발생하기 전에는 절대 변하지 않는다.

a = 9
a-3
print(a)

 

a= 9
t = a-3
a = t
print(a)

위에것 비효율 적이여서 아래처럼 바꾼다.

a= 9
a = a-3
print(a)

더 줄이기 

a = 9
a-=3
print(a)

- 뿐만 아니라 +, * , / 등 사용가능하다.

 

 

문자열 타입의 이해 및 활용하기

문자열 

생성 4가지 방법

a = ' '

b = " "

위 두개는 차이점이 없다. 문자열 안에서 사용한 것과 다르게 사용하면 된다.  enter 사용 불가 

 

a = ''' '''

b = """ """

위 두개는 enter사용가능하다.

 

차이점이 있다. 출력은 같지만 

 

escape 문자 

문자열 자체로 쓰이는 것이 아니라 특수 효과로 쓰인다.

\n new line

\t tab 등 

 

indexing은 0부터 ㅣ작한다.

마지막 순서는 -1혹은 len()-1

대괄호 이용해서 index사용할 수 있다.

 

python은 음수 index 지원한다.

0부터 시작하고 음수 index도 지원한다.

음수는 뒤에서 부터 시작한다.

 

인덱스의 범위

범위를 초과하면 string index out of range라는 에러가 난다.

유용한 index사용하기 

 

 

문자열 slicing : 부분적으로 짜르는 것 이다.

시작 : 끝  사이의 문자를 가져온다. 

a = 'Hello world'
a[0:4]

0<= <4

생략도 가능하다.

:끝  0 ~ 끝-1

시작:  시작 ~ 끝

: => 시작 부터 끝 

부분 문자열을 추출 할때

 

문자열 함수

a = 'hello world'

a. 하고 tab을 눌리면 

upper()  대문자

replace('','')

 

format 

temperature = 25.5
prob = 80.0
a = '오늘 기온{}도 이고 , 비율 확률은 {}% 입니다.'.format(temperature, prob)
print(a)

split

.split() 띄여쓰기를 기준으로 한다.

.split('w') 문자열 혹은 기타로 하고 싶을 때  w 기준으로 하고 싶을 때  

a = 'hello world what a nice weather'
a.split('w')

 

 

컬렉션 타입 이해  (List)

컬렉션 -> 어떤 것들의 모음이다. 모음이 어떤 목적에 의해서 모은것인지

list & tuple

list순서가 있는  추가 , 삭제 등 가능 동적으로 크기가 변경 가능

tuple 생성된 후에 변경 불가능

 

list

a = [] 

a = [1,2,3,4,5]

a = 'hello world'

b = list(a)

 

split() 함수 

indexing 

문자열 

a = 'hello wold'

print(a[0]

a[0] = 'j' => 어레가 난다. 'str' objects does not support item assignment

문자열은 불변(immutable) 변경이 안된다. 그래서 다시 생성하거나

문자열이 생성되면 절대 바꿀 수 없다. 

b = 'jello world'

c = 'j'+a[1:]

혹은 replace()함수를 사용해서 

a.replace('h','j') 하지만 a자체는 변하지 않는다 . 출력만 한다.  값을 바꾸려면 대입을 해야 한다.

 

list는 바꿀 수 있다.

a =[1,2,3,4]

a[0] = 100

 

리스트 slicing 

 start: end : increment(1)

 

값 추가 및 바꾸는것

 

컬렉션 타입 이해 -2 (List)

list에도 멤버 함수가 있다.

list에 값을 추가하는것 

.append() 리스트의 끝에 항목을 추가

.extend() 리스트를 연장 += 로도 가능함

a = [1,2,3,4,5]

b = [6,7,8,9,10]

#[1,2,3,4,5,6,7,8,9,10]

a.append(b)

[1,2,3,4,5,[6,7,8,9,10]]

a[5]

[6,7,8,9,10]

=>

a.extend(b) 혹은 a+=b

print(a)

 

append는 항상 마지막에 추가

insert() 원하는 위치에 추가

 

remove() 값 지우기 값으로 지운다. 

a.remove(2) 값으로 지우기

지우고 싶은 값이 없을 경우에는 오류가 난다.

pop() 지우고자 하는 아이템을 반환후 , 삭제

 

index() 찾고자 하는 값의 인덱스 반환

값으로 찾기 없을 경우에는 에러 

 

in 키워드 : 리스트 내에 해당 값이 존재하는지 확인

a = [1,2,3,4,5,10]

b = 10

c = b in a # True => b가는 값이 a에 있는 가 ?

 

 

list 정렬

sort() -> 리스트 자체를 내부적으로 정렬

sorted() -> 리스트의 정렬된 복사본을 반환

a= [9,10,7]

a.sort(reverse=True) =>내림차순

 

컬렉션 타입 이해 -3(tuple)

튜플은 괄호를 이용한다. 

a=[1,2,3] =>list

a = (1,2,3) => tuple

tuple은 생성된 후 수정 불가 

 

거의 사용하지 않지만 

사용 원인 

튜플의 값을 차례대로 변수에 대입

a = (100,200)

a = 100, 200 => 괄호를 생략 가능하다. 

type(a)

a, b = (100,200) => multiple return 

print(a,b)

변수 여러개 대입하거나 할 수있어서 편한다. tuple unpacking

함수는 값을 한개 할 수있지만 tuple로 반환하면 여러개 할 수있다.

 

연습문제

a = 5
b = 4

#logic
a = b
b = a

print(a,b)

 

a = 5
b = 4

#logic
temp = a
a = b
b = temp

print(a,b)

a = 5
b = 4

a,b = b,a
print(a,b)

 

컬렉션 타입 이해 -3(dict)

dict : 키와 값을 갖는 데이터 구조

dictionary는 순서가 없고  index가 없다.

a = {}

key , value를 복수개를 가지고 있다.

 

기존에 키가 존재하면 , 새로운 값으로 업데이트

존재하지 않으면 , 추가

동일한 키가 중복으로 두개 있을 수 없다.

value는 여러개 있을 수 있다.

 

update()  두 딕셔너리를 병합함

겹치는 키가 있다면 parameter로 전달되는 키 값이 overwrite된다.

 

key 삭제 

del 키워드 사용 범용적으로 사용할 수 있다. 

pop 함수 이용

a.pop('b') 

del a['b']

 

c = 100

del c

print(c) => undefined

 

딕셔너리의 모든 값을 초기화

clear()

변수명.clear()

 

in  

key값 존재 확인

O(1) 연산 

 

'b' in a

in keyword는 기능이 매우 중요하다.

in list, dict 두개 다 가능하다.

 

a.get('d') ->값이 없어도 오류가 안난다.

a['d']

 

if 'd' in a:

  print(a['d'])

 

keys()  키만 반환

values() 값만 반환

items() 키, 값의 튜플을 반환

list(a.items())

 

 

컬렉션 타입 이해 -3(set)

set은 거의 사용할 일이 없다.

중복이 안되고 순서가 없는 

indexing이 없다. 순서가 없다. 오류가 없다. indexing이 없는 것은 순서가 없다는 것이다. 

a = set()

a={}=>이런식으로 할 수 없다.

b = set(a)

print(b) =>중복이 허용 되지 않는다.

 

a = {1,2,3}
b =  {2,3,4}
print(a.union(b)) #합집합
print(a.intersection(b)) #교집합
print(a.difference(b)) #차집합
print(a.issubset(b)) #부분 집합 

 

 

 

 

반응형

'교육동영상 > 01. 딥러닝인공지능' 카테고리의 다른 글

06. 이미지 분석 tensorflow 2.0  (0) 2020.11.25
05. Tensorflow 2.0 Pytorch  (0) 2020.11.24
04. 인공지능에 대한 개념과 준비  (0) 2020.11.23
03. python 함수  (0) 2020.11.19
02. python 조건문, 반복문  (0) 2020.11.19

+ Recent posts