본문 바로가기

프로그래밍/파이썬

(14)
[파이썬] 일등 함수(first-class citizen) 이란? 일등함수 함수는 일등 시민(first-class citizen) 일등 시민(first-class citizen)이라고? 정말 생소한 개념이다. 익숙하진 않지만, 다음 조건을 충족한다면 일등 시민이라고 할 수 있다. 변수나 데이터에 할당 할 수 있어야 한다. 객체의 인자로 넘길 수 있어야 한다. 객체의 리턴값으로 리턴 할 수 있어야 한다. 위키백과 : 일급 객체란? 엥? 그거 다 되는거 아니야? 싶겠지만 파이썬에서는 독특하게도 함수도 위와 같은 기능을 수행한다. 이러한 특징을 가진 일급 객체(first-class citizen)를 사용하면 손쉽게 함수를 재활용 할 수 있다. 예제참고 블로그 1. 함수를 변수에 할당 가능 def square(x) : return x * x f1 = square_numbers..
[파이썬] 리스트 컴프리헨션(list comprehension)의 이해 0. 들어가기 앞서 행(row)을 만나기 위해서는 matrix의 괄호를 한 번 벗겨야 한다. 행의 원소(element)들을 만나기 위해서는 matrix의 괄호를 두 번 벗겨야 한다. 한 번 벗기기 위해서는 for문을 한 번만 사용하면 되고 두 번 벗기기 위해서는 for문을 두 번 사용하면 된다. 1. row 내의 element 접근하기 리스트 컴프리헨션은 여러 가지 표현식이 있어서 더 어려운 듯 하다. 여기서 element란 하나하나의 원소를 의미한다고 정의하자. 간단하게 표현하면(?) 위와 같이 얘기할 수 있다. for문은 →로 진행되며, 괄호를 한꺼풀식 벗긴다고 생각하면 된다. 그래서 첫번째 for문에서 원 데이터(matrix)가 가장 먼저 등장하게 되며 한꺼풀식 벗긴 데이터를 또 한꺼풀 벗긴다고 생..
[파이썬] 행렬(matrix)과 리스트 컴프리헨션(list comprehension) 이해하기 0. 들어가기 앞서이번 포스팅에서는 행렬(matrix)에서 리스트 컴프리헨션(list comprehension)을 이용해 행과 열을 뽑아내도록 하겠다.여러 시행착오를 거치면서 삽질했던거라 까먹지 않기 위해 포스팅한다. 아주 얕은 깊이의 내용만을 다루며 많은 오류가 예상된다.포스팅에 오류가 있다면 적극적으로 말씀해주세요! 1. 행렬 표현식 이해하기 행렬에 대해 공부할 때 가장 헷갈리는 게 행(row)과 열(col)이라는 용어를 이해하는 것이다. 행은 가로줄을 의미하고, 열은 세로줄을 의미한다.나는 행과 열을 이해하는 데 힘들었다. 아무튼 힘들었다. 2. 행렬의 행(row)과 열(column) 이해하기행렬은 위 그림처럼 표현할 수 있다행(row) 한 줄은 괄호 하나를 벗기면 되고,행(row) 한 줄에 속해있..
[파이썬] 문자열 압축하기 문자열을 입력 받아 같은 문자가 연속적으로 반복되는 경우에 그 반복 횟수를 표시해 문자열을 압축하여 표시해 보자. 입력 예시 : aaabbcccccca출력 예시 : a3b2c6a1 def zip(sentence): count = 0 # 문자를 세기 위한 변수 next = "" # sentence가 달라지는 곳을 감지하는 수단 result = "" # 결과를 저장하는 공간 for i in sentence: if next != i: next = i if count: result += str(count) result += i count = 1 else: count += 1 if count: result += str(count) return result 첫번째 for문은 파라미터(parameter)로 전달받은 ..
집합(set), 시퀀스(sequence), 매핑(mapping) 파이썬으로 배우는 수학적 프로그래밍(알란 M.스테이블리 지음)을 참고했습니다.파이썬의 기초 내용에 좀 더 보태 정리한 내용이니 오류 지적은 달게 받겠습니다. 집합(set) 집합 자료형의 특징 1. 중복을 허용하지 않는다. 2. 순서가 없다(Unrordered) 집합은 다양한 것들이 순서 없이 모여 있는 모임 EX) 전화번호의 모든 번호, 이름에서 차례로 된 문자들 다중집합(multi-set)다중 집합은 집합과 비슷하지만, 집합 내 모든 원소가 다를 필요가 없다. 즉 어떤 원소가 하나 이상일 수 있다.하지만 순서가 없다는 것은 집합과 공통점이다.온도를 관찰한 데이터 모임이 다중집합이라고 할 수 있다. 1980년도의 평균온도와 1981년도의 평균 온도가 같을 수 있다. 대신 관측 순서가 중요하기 때문에 데이..
[파이썬] 리스트(list) append 메서드 사용시 NoneType이 출력되는 경우 제가 코드를 작성하면서 실수한 점을 적었습니다. 1. 간단한 문자열 리스트를 작성해보았다. 2. 리스트를 출력해보면 아래와 같이 출력된다.'a''b''c''d' 3. 여기에 append 메서드를 이용해 'e'를 넣어본 뒤 출력하면 아래와 같이 출력될까?'a''b''c''d' 'e' 4. 아니다. None이 출력된다. 그 이유는? 이는 메서드의 리턴값을 몰라서 발생한 오류이다.append 메서드 자체는 return값으로 None을 돌려준다.그래서 print(aList.append('e'))의 값이 None이 출력되는 것이다. 따라서, 다음과 같이 출력하면 정상적인 결과를 얻을 수 있다.aList = ['a', 'b', 'c', 'd'] for i in aList: print(i) aList.append('..