파이썬 (62) 썸네일형 리스트형 파이썬 객체지향 프로그래밍 객체지향 프로그래밍에 대해 알아보자. 그전에 객체지향 프로그래밍은 무엇일까? 비교 대상이 있으면 이해가 쉽다. 절차지향 프로그래밍과 객체지향 프로그래밍을 비교해보자. 절차지향 프로그래밍 말 그대로 순차적인 처리가 중시되는 프로그래밍 프로그램 전체가 유기적으로 연결됨 컴퓨터의 처리 방식과 유사해 빠른 속도가 장점 ex) C, 코볼 파스칼, 포트란 등 객체지향 프로그래밍(Object Oriented Programming) 개발하고자 하는 것을 기능별로 묶어 모듈화하는 프로그래밍 방식 중복된 연산을 하지 않고 모듈을 재활용하여 하드웨어 처리량 절약 ex) Python, C++, C#, JAVA 등 매우 많다 OPP의 4가지 특성 추상화(Abstraciton) 공통의 속성이나 기능을 묶어 이름을 붙이는 것 OO.. 파이썬 map, filter, reduce Map 리스트의 요소에 함수를 적용하여 iterator 객체로 반환 list가 아닌 iterator로 반환하는 이유는 원하는 자료구조로 변환시킬 수 있도록 하기 위함. a = [1, 2, 3] b = list(map(lambda x: x + 10, a)) #[11, 12, 13] https://leejunggae.tistory.com/31 파이썬 람다 함수(lambda) 람다 함수 함수의 표현 방식 중 하나 lambda 인자 : 표현식 의 형태로 사용 표현식 안에서 변수를 만들 수 없음 익명함수 : 이름이 없는 함수를 만듬 -> 변수에 할당해주어야 함 def plus(x): return x + 10 x = p.. leejunggae.tistory.com 자주 같이 쓰이는 람다 함수에 대해서는 이전 포스트.. 파이썬 게으른 연산(lazy evaluation) 게으른 연산(lazy evaluation) 연산이 필요할때까지 연산하지 않는 것. iterator, generator 객체에 해당 마지막 데이터 이후부터는 StopIteration exception 발생 메모리 절약으로 리스트보다 안정적, 효율적 iterable + iter() = iterator iterator, generator에 대한 설명은 이전에 다루었으니 링크 참고. https://leejunggae.tistory.com/28 파이썬 클로저(closure) 클로저 어떤 함수를 함수 자신이 갖고 있는 환경과 함꼐 저장한 레코드 자신의 영역 밖 호출된 함수의 변수 값과 레퍼런스 저장, 캡쳐한 값에 액세스 제공 def out(): message = 'Hi' def in(): print message return in func = out() func() # Hi out이란 함수를 실행하면 in 이라는 함수를 return 한다. 그 in을 func에 넣고 실행해보면 Hi가 출력된다. 분명 in은 전달받는 인자도 없고 내용은 print message뿐인데 어떻게 Hi를 출력할까? http://schoolofweb.net/blog/posts/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%ED%81%B4%EB%A1%9C%EC%A0%80-closure/ 답은 clos.. 파이썬 람다 함수(lambda) 람다 함수 함수의 표현 방식 중 하나 lambda 인자 : 표현식 의 형태로 사용 표현식 안에서 변수를 만들 수 없음 익명함수 : 이름이 없는 함수를 만듬 -> 변수에 할당해주어야 함 def plus(x): return x + 10 x = plus(5) print(x) # 15 기존 함수를 plus = lambda x: x + 10 x = plus(5) print(x) # 15 이런식으로 표현할 수 있다. # 바깥 변수 사용하기 y = 10 (lambda x: x + y)(1) # 11 # 람다 표현식 인수로 사용하기 list(map(lambda x: x + 10, [1, 2, 3])) # [11, 12, 13] 부가적인 사용방법들. 인수 만들때 편리할 것 같다. 파이썬 데코레이터(Decorator) + *args, **kwargs 데코레이터 함수를 꾸며주는 장식자 기존 코드를 수정하지 않고도 기능을 추가할 수 있다. def decorator(function): def wrapper(): # 받은 함수를 실행 print('{} 함수 호출 요청'.format(function.__name__)) return function() return wrapper @decorator_function # 아래 함수를 function 인자로 넣어준다. def abc(): print('abc 함수 실행 완료.') @decorator_function # 아래 함수를 function 인자로 넣어준다. def xyz(): print('xyz 함수 실행 완료.') abc() print xyz() # abc 함수 호출 요청 # abc 함수 실행 완료. # # .. 백준 9663번 [Python] 문제풀이 (N-Queen) - 이정개 문제 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (1 ≤ N < 15) 출력 첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다. 예제 입력 1 8 예제 출력 1 92 알고리즘 분류 ㆍ백트레킹 PyPy3 코드(시간초과) n, ans = int(input()), 0 a, b, c = [False]*n, [False]*(2*n-1), [False]*(2*n-1) # a=수직, b=우상향대각선, c=좌상향대각선의 각각 가능한 칸수만큼 def solve(i): global ans if i == n: # 퀸을 다 놓았다면 ans +=.. 파이썬 반복자와 생성자(Iterator, Generator) 반복자(Iterator) 반복가능한 개체(Iterable object) 반복문을 활용해서 데이터를 순회하면서 처리하는 것 next()를 가진 모든 객체 무한한 데이터소스를 나타낼 수 있다. 아래 예시로 확인하자 x = iter([1, 2, 3]) print(next(x)) # 1 print(next(x)) # 2 print(next(x)) # 3 print(next(x)) # stopiteration exception 데이터를 순회시키면서 처리할 수 있다. x = iter([1, 2, 3]) print(x.__next__()) # 1 print(x.__next__()) # 2 print(x.__next__()) # 3 print(x.__next__()) # stopiteration exception 이러.. 이전 1 2 3 4 5 6 7 8 다음