변수 설정 # 이거 안됨 a=1. ## 이건 됨 Abc = 1. ABC = 2. erlang의 모든 변수는 대문자로 시작해야한다. 변수 erlang에서 변수는 단일 할당 변수다. 변수는 두 가지 상태를 가짐 UnBound : 아직 값을 가지지 않음. "=" 연산자는 할당 연산자처럼 동작. Bound : 값을 가짐. "=" 연산자는 패턴 연산자로 동작. erlang에서 변수는 어떤 값에 대한 참조다. Bound 된 변수는 그 값을 담은 저장소 영역에 대한 포인터로 표현된다. erlang의 변수에는 atom도 할당이 가능하다. 익명 변수 _ : 익명변수 # 사용법 {_,{_,{_,{_,Who},_},_} = Person. "_"는 익명변수로 사용된다. 익명변수는 동일한 패턴에서 여러 번 나오더라도 같은 값으..
Hash Key 생성 기본적으로 파이썬은 Hash를 이용한 딕셔너리라는 자료구조를 제공한다. 이 때, 단순히 하나의 값으로 Hash를 생성할 때는 크게 생각을 하지 않아도 된다. 이를 테면 "AB" 같은 것들은 훌륭하게 Hash Key로 사용할 수 있다. 그런데 Key로 사용되어야 할 값이 복잡해지면 고민이 생기기 시작한다. 어떻게 키를 만들지? 이런 저런 방법이 있을 수 있는데, 나는 이전에는 주어진 문자열을 join 메서드로 붙인 값을 key로 사용해서 값을 넣어주곤 했다. 그런데 Hash에 사용할 Key를 생성할 때, 좀 더 효율적으로 사용할 수 있는 방법이 있다. 바로 Hornor's Method다. Hornor's Method 활용 한 가지 예를 들어보자. 알파벳 소문자(a-z)만 등장하는 문자..
Python Deque 정렬하기 Python의 Deque은 정렬하는 방법이 따로 없다. que를 정렬하면 리스트가 되는데, 이 리스트를 다시 deque 생성자에 넣어주는 방식으로 정렬을 하는 방법은 존재한다. Deque 뒤집기 q = deque() q.reverse() Deque은 정렬은 할 수 없으나, 기존 Deque을 뒤집는 방법은 존재한다. Deque Rotate 하기 Deque은 Rotate 하는 함수가 있다. 사람이 직접 구현하면 pop, append를 이용해야하는데, 그걸 명령어 하나로 몇칸씩 움직일지를 알려주기 때문에 좀 더 편리하게 사용할 수 있다. a = [1,2,3,4,5] q = deque(a) q.rotate(2) input : 1,2,3,4,5 output : 4,5,1,2,3 양..
Python Key 그동안 가내수공업으로 필요한 함수들을 구현해왔었다. 그렇지만 파이썬의 Key 파라메터와 함께 내장모듈을 이용하면 좀 더 편리하게 코드를 구현할 수 있고, 덕분에 가독성이 향상되고 코드의 크기도 줄어든다. 따라서 안 쓸 이유가 없는데, 그동안 제대로 정리된 적이 없었기 때문에 선뜻 사용하지는 못하고 있었다. 이번에 살짝 정리를 해보려고 한다. min, max 함수에 사용하기 min, max 함수를 살펴보면 옵션에 Key가 있는 것을 확인할 수 있다. min, max 함수를 이용해 값을 구할 때 key에 min, max를 구할 조건을 지정해준다고 이해를 해주면 될 것 같다. a = np.random.randint(0,100,50) print(a) Numpy로 Random 값을 만들고 출력..
스트림이란? 스트림은 Collection 계열을 다루는 방식을 표준화하는데 많은 도움이 된다. 예를 들어 List를 정렬하기 위해서는 Collection.sort()를 사양했다. 배열을 정렬할 때는 Arrays.sort()를 사용했다. 그런데 스트림을 사용하면 sotr()로만 이런 Collectino 무리들을 손쉽게 정렬할 수 있다. 쉽게 말하면 스트림은 데이터 소스를 추상화하고, 데이터를 다루는데 자주 사용되는 메서드를 정의해둔 것이다. 추상화 되었다는 말은 공통된 방법으로 다룰 수 있게 되었다는 것이다. 이렇게 되면 코드 재사용성이 증가한다. 스트림의 특징 스트림은 데이터 소스를 변경하지 않는다. 스트림은 데이터 소스를 읽기만 한다. 실제 데이터 소스를 스트림은 변경하지 않는다. 스트림은 일회용이다...