람다표현식과 맵, 필터, 리듀스 (Python)

람다(lambda, )는 본래 수리논리학에서의 함수정의를 추상화한 형식 체계로, 간단히 말해서 이름이 없는 함수 혹은 인라인으로 정의하는 함수로 이해할 수 있다. 수학에서의 람다대수의 정의와 비슷하게 파이썬에서는 다음과 같이 람다함수를 정의한다. lambda {파라미터,…} : {표현식} 람다식은 그 자체로 표현식이며 다음 구성 요소로 작성한다. 키워드 lambda 파라미터 : 컴마로 구분되는 1개 이상의 파라미터. 파라미터는 반드시 1개 이상이어어야 한다.

functional python에 대한 단상

문득, 이런 생각이 들었다. temp = [] for i in range(10):   temp.append(i*i) 이 코드는 10보다 작은 완전제곱수의 리스트를 만드는 함수다. 빈 리스트를 만들고 range() 로 부터 값을 받아 제곱한 다음, 리스트에 넣는다. 이 과정은 파이썬에 익숙한 사람이라면 반복문 보다는 리스트 축약으로 표현할 것이다. temp = [i*i for i in range(10)] 파이썬 리스트 축약의 기본

프로젝트 오일러 51

오랜만에 다시 시작하는 프로젝트 오일러 문제이다. 참고로 50번을 넘어서면서부터는 꽤 어려운 문제들이 많이 나오고, 이런 저런 풀이들을 참고해봐도 영 이해가 안가는 문제도 몇 개 있다. (참고로 아직 100번까지는 몇 개 못 푼 문제들이 있어서 과연 몇 번까지 연재할 수 있을지도 모르겠다…) 일단 문제 갑니다… 두자리 숫자 *3 의 첫번째 자리를 여러가지로 바꿨을 때 가능한 아홉가지의

파이썬의 반복문과 iterable에 대해

리스트, 튜플, 문자열, 사전의 공통점은? 모두 for … in 문에 사용할 수 있다는 점이다. 리스트는 for 문을 통해서 개별 원소에 대한 반복 작업을 할 수 있는데, 튜플과 문자열 역시 이와 똑같은 동작을 수행하며 사전의 경우에는 사전 내의 각 키에 대해서 순회하는 기능을 제공한다. 파이썬에서는 이와 같이 for … in 구문을 통해서 반복이 가능한 타입들을 묶어서

asyncio : 단일 스레드 기반의 Nonblocking 비동기 코루틴 완전 정복

asyncio에 의한 단일 스레드 병렬 작업 지난번 concurrent.futures를 소개한 글에서 파이썬 3에서부터 멀티스레딩/멀티프로세싱에 대해 새로 도입된 고수준 API에 대해 살펴봤다. 이 새로운 API는 함수 호출을 병렬로 처리하는 동작을 사용하기 쉽게 만들 뿐 아니라, 직접 스레드를 제어하는 것이 아닌 Future 객체를 사용함으로써 자바스크립트의 Promise 개념을 도입한 것으로 평가할 수 있다고 보았다. 새로운 병렬처리 API와 더불어 Future