본문 바로가기

반응형

흔한말 (collection)/Python

(21)
함수의 탄생: 문맥(Context)에서 기능(function)으로 프로그래밍은 보통 리스트(로 대변되는 반복 가능한 타입)를 받아서 그중 일부를 추려내고, 모든 원소에 동일한 변환작업을 한 다음 그 변환된 결과에서 어떤 의미를 추출해 내는 작업의 연속인 경우가 많습니다. 사례와 같이 봐야 더 정확한 설명이 되겠지만, 어떤 "의도"를 가지고 구현해 내는 코드는 상황에 따라서 결과값은 달라지지만, 그 본질적인 논리의 흐름은 변하지 않는 경우가 종종 있습니다. 코딩으로 문제를 해결하는 보통의 상황 무슨 말인지 좀 구체적으로 예를 들어볼까요? 어떤 공부 관련 커뮤니티에서 모의고사를 시행했는데, 그중 90점 이상의 성적을 낸 사람들에게 상품을 주려고 한다고 해보겠습니다. 상품을 주기 전에는 당연히 공지사항으로 어떤 사람이 당첨되었는지를 밝혀야 하는데, 아이디를 그대로 밝히면 개..
파이썬 filter, map, reduce는 마치 공장같다(커피를 뽑는) 지난번 reduce 포스팅에서 말했듯이, filter, map, reduce 함수는 함께 조합되어 많이 쓰입니다. 여러 가지 원소들 중 특정 조건을 만족하는 것들만 골라서 => filter 골라진 원소들을 어떤 규칙을 통해 변환한 뒤 => map 변환된 원소들의 특성을 하나로 추출하는 => reduce 이러한 방식으로 자주 쓰입니다. 지난번 filter함수 포스팅에서는 커피가루를 예로 들어서 여러 가지 필터링 코드를 짜 봤지요? 이번에도 커피를 가지고 골라서, 변환한 뒤, 추출하는 예시 코드를 통해서 이해해 보도록 하겠습니다. 과테말라_커피가루 = [ {'이름': '카페인', '용해성': '수용성', '로스팅후변화': False, '함량': 10.00}, {'이름': '광물질', '용해성': '불용성',..
주피터노트북 수많은 셀 중, 딱! 하나만 파일로 저장하기! 주피터 노트북에서 파이썬으로 프로그래밍을 하다 보면 반복되는 코드를 재사용하기 쉽게 함수로 만들게 됩니다. 이런 함수들을 보통 한 셀에 몰아넣고, 다른 셀에서는 이 함수들을 호출하면서 프로그램을 짜는 일이 많죠. 그런데 함수의 내용이 길어지면 주피터노트북의 길이가 길어지게 되고, 프로그램의 큰 흐름을 만드는 코드에 대한 가독성이 떨어지는 때도 생깁니다. 그럴 때 사용할 수 있는 방법은 셀을 파일로 분리해서 저장한 다음 다시 import 하는 것입니다. 복잡한 프로그램이라고 가정하고 아래 코드를 보세요 def func0(): return "init_value" def func1(x): return pow(x,x) def func2(x): return x % 1111 def func3(x): return x..
python reduce의 내용을 한 줄로 요약: "reduce는 요약한다" python reduce는 리스트의 여러 원소들이 가진 특성을 하나로 정리해줍니다. 즉, 요약해줍니다. (물론 리스트 뿐만이 아니고 모든 반복 가능한 데이터 형들이 대상입니다.) 특성을 하나로 정리한다는 말이 사실은 엄청 광범위한 말인데, 시각자료로 설명해보겠습니다. 눈이 휘둥그레지는 reduce 세계 reduce의 세계에 오신것을 환영합니다! 이곳은 아주 골 때리고 요절복통인 세계입니다.. 이러한 리스트가 있다고 가정합시다. 7개의 원소가 있는 리스트군요. 그러고 나서 뜬금없이, 2개의 재료를 받아서 짝짜꿍 한 결과를 반환하는 "어떤 함수"를 준비합니다. 아직 질문하지 마세여. 좀 더 보시고 난 담에 질문하시어요. 그다음에 우리는 이런 짓을 할 겁니다. a와 b만 꺼내서 어떤함수에 집어넣고, 짝짜꿍한 ..
파이썬 전치행렬 손수 만드는 법! 전치행렬하나 만들자고 numpy 설치하시나요? numpy는 데이터 처리에 엄청난 능력을 보여주는 라이브러리이지만, 작은 규모의 프로그램을 만드는 상황이나, 그리고 매번 실행환경이 달라져야 하는 코드라면, numpy가 제공하는 함수들을 파이썬 기본 문법으로 해결하고 싶을 때도 생깁니다. 그래서 아주 유용하고 빈번하게 사용되는 전치행렬에 대한 내용을 기본문법으로 구현해 보겠습니다. 전치행렬이 뭔데? 일단 행렬이 뭔지 아시는 것을 가정하고 설명하겠습니다. 행과 열을 뒤바꾸는 것이 전치 행렬인데요. 엑셀로 예를 들어보면 이런 식이 되는거죠. 초록색 데이터는 [1, 2, 3, 4, 5] 로 데이터가 묶였지만 붉은색 데이터는 [1, 6]으로 데이터가 묶여 있죠? 파이썬내장 zip 함수로 전치행렬 만들어보기 이차원행렬 = [ [1,2], [3,4], [5,6] ..
python filter 로 게으르게 커피한잔 하고 가세요! 향이 좋아요! filter라는 함수가 있습니다. 파이썬에만 있는 함수는 아닌데요. 사용법은 다들 유사합니다. 커피필터는 갈아낸 커피가루를 받아들여서 물에 녹는 성분들만 아래로 통과시킵니다. 이를 함수로 나타내면 커피한잔 = 커피필터(수용성성분만_골라냅시다!, 커피가루) 정도가 되겠죠? 원본리스트에서 원하는 부분집합을 추출해주는 함수가 바로 filter() 함수입니다. 추출리스트 = filter(조건, 원본리스트) 아까 커피의 예와 비슷하게 써보면 이렇게 되겠죠? 원본리스트의 원소 중에서 조건을 만족하는 원소만 반환한다. 이렇게 독해하시면 됩니다. 그러면 코드예제를 통해 어떻게 쓰는지 알아봅시다. 커피로 배워보는 filter 함수() 아까 커피의 예를 들어서 설명했으니 컨셉을 계속 끌고 가보도록 하죠. 일단은 커피가 어..
python map 함수의 비정함 프로그래밍을 공부하다보면 생각보다 매 순간이 리스트를 다루는 일의 연속이라는 것을 깨닫게 됩니다. 왜냐? 우리는 컴퓨터로 여러가지의 정보를 한꺼번에 처리하는 것으로써 다루는 도구의 효율을 높이기 때문입니다. 여러가지의 개체를 (예를 들면 회원가입된 여러 사람들의 이메일 주소 목록이라던지, 아니면 모델링 프로그램으로 작성된 수 백개의 기둥형상이라던지) 한꺼번에 계산해서 결국엔 처리결과 라는 새로운 리스트를 만들어 냅니다. 즉, [원본리스트] 에 [어떤 규칙]을 적용해서 [새로운 리스트]를 만들어 낸다 라는 것이죠. 기존방식으로 리스트 처리하기 위에 써진 대로 간단한 코드를 한번 만들어 볼까요? 먼저 숫자 5개가 있는 리스트를 준비합니다. 원본리스트 = [1,2,3,4,5] 그 다음에는 각 원소에다 어떤 규..
정규표현식 잘 몰라도 코드 짤 수 있어요 어.........음... 다만 코드가 엄청나게 길고 복잡해 질 뿐이죠. 네.. 이 말은 정규표현식에 대해 알아야 한다는 말입니다. 그런데 오히려 알아야한다는 말만 많이 듣고, 한두번씩 배움을 미루다 보면 거북하고 거추장스러워서 점점 배우기 싫어집니다. 거추장스러움을 없애기 위한 방법인데 말이죠. /[^a-zA-Z0-9가-힣ㄱ-ㅎ]/g 정규식이라고 해서 검색했는데, 이런 예제를 보고 나면, 암호문을 본 듯한 기분에 일단 쉬고 싶어집니다. 그래서 오늘은 많은 내용들을 손질해서, 먹을 부분만 딱 남겨 보여 드리겠습니다. regex 언제 쓰나? 흔히 regex라고 줄여쓰는 regular expression (정규표현식) 은, 데이터로 들어온 문자열을 판별할때 쓰는데, 우리는 살면서 많은 글자들을 바탕으로 움직..

반응형