Reduce 연산 Reduce는 정의된 연산이 아닌, 프로그래머가 원하는 연산을 디자인 할 수 있다. Reduce는 Stream의 최종연산이 되며, Stream을 Return한다. Stream을 Return 하기 때문에 각 요소는 소모된다. Reduce는 아래 두 가지 형태가 있음. // 1) 람다식을 활용한 reduce Stream.reduce(초기값, 람다식) // 2) Binary Operator 클래스를 구현한 인스턴스 Stream.reduce(Binary Operator가 구현된 인스턴스) 1번은 초기값을 넣은 후, 람다식으로 원하는 연산을 중괄호를 이용해 구현하면 된다. 1번에 대한 코드는 아래와 같다. public class ReduceTest { public static void main(..
객체 지향 프로그래밍 객체 지향 프로그래밍은 각 항목들이 각각의 성질을 가지는 객체로 보고, 그 객체들 간의 상호작용을 구현하는 프로그래밍이다. 즉, 객체간의 협력이 일어나는 것을 묘사하는 것으로 보면 된다. 실제로 객체 지향 프로그래밍은 우리 삶과 매우 닮아있다. 예를 들어 회원 로그인을 하고 여러 판매자가 팔고 있는 상품 중 하나를 골라 주문하는 경우가 있다. 이를 객체 지향 프로그래밍으로 뜯어볼 수 있다. "회원 객체"가 홈페이지에서 "판매자 객체"가 판매하고 있는 "상품 객체"를 골랐다고 볼 수 있다. 객체 지향 프로그래밍은 이런 객체 관점에서 뜯어본다면 회원 객체와 판매자 객체, 그리고 상품 객체가 서로 상호작용을 하는 것을 구현하는 프로그래밍이라고 볼 수 있다. 이런 객체 지향의 핵심은 1) ..
접근제어지시자 접근제어지시자를 활용해 변수와 메서드의 공개 범위를 설정할 수 있다. 공개범위가 설정에 따라 '정보은닉'을 구현할 수 있다. 정보은닉이 필요한 이유는 멤버 변수가 외부에서 쉽게 접근할 경우, 이상한 값이 들어올 수 있다. 이 때, 이를 Private로 선언하고, set 함수로만 접근 가능하게 만든 다음, 조건문으로 정상적인 값이 확인될 경우에만 값을 설정할 수 있게 한다. private로 변수를 선언할 경우, get,set 메서드를 구현해서 외부에서 값을 변경할 수 있도록 한다. 접근 제어 지시자 공개 범위 default 같은 패키지 내부에서만 접근 가능함. 다른 패키지에서 접근하려면, Import로 접근해야함. Public 클래스의 외부 어디에서나 접근 가능(공용) Private 클래스 ..
람다함수 Lambda 함수는 익명함수다. 한, 두번만 쓰일 함수라면 Lambda 함수로 급하게 만들어서 사용해도 괜찮을 것 같다. Lambda 함수는 함수식을 넣어서 함수를 일회성으로 선언해주는 것이기 때문에, Lambda 함수 바로 뒤에는 변수가 따라와야한다. (lambda 변수 : 식)(변수) b = (lambda x,y,z : x + y + z)(1,2,3) >>>> b = 6 c = (lambda x : x.strip())(' bbcd ') >>> c = bbcd map 함수 map 함수는 Iterable한 변수에 대해 연속적으로 함수를 실행해주는 함수다. map(함수, iterable) a = [1,2,3,4,5] b = list(map(lambda x : x+1, a)) >>>> b = [2,..
1. Round 함수 이용(반올림) 파이썬 Round 함수는 원하는 소숫점 자리에서 반올림한 값을 돌려준다. 여기서 문제는 이 함수가 굉장히 독특하게 동작한다는 점이다. 현재 값에 가까운 정수가 두 개 있다면, 짝수를 Return 해준다. 예를 들어서 Round(0.5)는 0과 1에 가까운데, 짝수를 Return 해주니 0을 Return 해준다. 반면 Round(1.5)는 1과 2에 가까운데, 짝수를 Return 해주니 2를 Return 한다. 또한, 내가 가지고 있는 소숫점 아래 자리까지 반영하라고 하면, 당연하게도 반영하지 못한다. https://docs.python.org/ko/3/library/functions.html?highlight=round#round round(3.5) >>> 4 roun..