반응형

3.1.5 집합

유일한 원소만 담는 정렬되지 않은 자료형이다.

set()

 

집합은 합집합, 교집합 , 차집합 , 대칭차집합 같은 산술 집한 연산을 제공한다.

union   |

intersection   &

 

 

3.1.6 리스트 집합사전표기법

리스트 표기법은 파이썬 언어에서 가장 사랑받는 기능 중 하나다.

dict_comp = {key-expr : value-expr for value in collection

                  if condition}

set_comp = {expr for value in collection if condition}

 

3.2 함수

함수는 파이썬에서 코드를 재사용하고 조직화하기 위한 가장 중요한 수단이다.

 

3.2.1 네임스페이스 스코프 지역함수

함수는 전역과 지역, 두가지 스코프 영역에서 변수를 참조한다.

변수의 스코프를 설명하는 다른 용어로 네임스페이스가 있다.

 

3.2.2 여러 값 반환하기

def f():

  a = 5

  b = 6

  c = 7

  return a,b,c

a,b,c = f()

 

튜플이 리턴된다.

 

3.2.3 함수도 객체다

파이썬에서는 함수도 객체이므로 다른 언어에서는 힘든 객체 생성 표현을 쉽게 할 수 있다.

정형화

데이터 정제

 

 

 

3.2.4 익명함수

익명함수 anonymous함수 혹은 람다lambda 함수라고 하는 값을 반환하는 단순한 한 문장으로 이루어진 함수

lambda 예약어

lambda x: x+2

람다함수는 데이터 분석에서 특히 편리한데, 이는 앞으로 알게 되겠지만 데이터를 변형하는 함수에서 인자로 함수를 받아야 하는 경우가 매우 많기 때문이다.

 

람다 함수가 익명 함수라고 불리는 이유 중 하나는 이 함수 객체에는 명시적인 __name__속성이 없기떄문이다.

 

3.2.5 커링 : 일부 인자만 취하기

커링은 수학자인 하스켈 커리의 이름에서 따온 컴퓨터 과학 용어로, 함수에서 일부 인자만 취하는 새로운 함수를 만드는 기법이다.

 

def add_numbers(x,y):

  return x+y

add_five = lambda y : add_numbers(5,y)

add_numbers 의 두번째 인자를 커링했다.

 

functools 모듈의 partial 함수를 이용하면 이 과정을 단순화할 수 있다.

from functools import partial

add_five = partial(add_numbers,5)

 

3.2.6 제너레이터

파이썬은 리스트 내의 객체나 파일의 각 로우 같은 순차적인 자료를 순회하는 일관적인 방법을 제공한다.

이테레이터 프로토콜 

for key in some_dict:

  print(key)

 

dict_iterator = iter(some_dict)

list(dict_iterator )

 

제너레이터는 순회 가능한 객체를 생성하는 간단한 방법이다.

일반 함수는 실행되면ㄴ 단일 값을 반환하는 반면 제너레이터는 순차적인 값을 매 요청 시마다 하나씩 반환한다.

제너레이터를 생성하려면 함수에서 return을 하는 대신 yield예약어를 사용한다.

 

제너레이터 표현식

제너레이터를 생성하는 더 간단한 방법

gen = ( x** 2 for x in range(100))

 

itertools 모듈

표준 라이브러리 인 itertools모듈은 일반 데이터 알고리즘을 위한 많은 제너레이터를 포함하고 있다.

import itertools 

first_letter = lambda x: x[0]

 

3.2.7 에러와 예외처리 

에러 처리 필요

try:

 

except:

 

else:

 

finally:

 

IPython에서 예외 처리

%xmode

 

 

 

반응형

+ Recent posts