언어/파이썬
-
원형 큐(Circular Queue)언어/파이썬 2021. 1. 18. 23:26
원형큐는 FIFO 구조를 지닌다는 점에서 기존의 큐와 동일하다. 그러나 마지막 위치가 시작위치와 연결되는 원형 구조를 띠기 때문에 링 버퍼 라고도 부른다. 기존의 큐는 공간이 꽉 차게 되면 더 이상 요소를 추가할 수 없었다. 심지어 앞쪽에 요소들이 deQueue()로 모두 빠져서 충분한 공간이 남게 돼도 그쪽으로는 추가할 수 있는 방법이 없다. 그래서 앞쪽에 공간이 남아 있다면 이 그림처럼 동그랗게 연결해 앞쪽으로 추가할 수 있도록 재활용 가능한 구조가 바로 원형 큐이다. 원형큐의 삽입과 삭제 원리는 위의 그림과 같다. 동작하는 원리는 투 포인터와도 비슷하다. 마지막 위치와 시작 위치를 연결하는 원형 구조를 만들고, 요소의 시작점과 끝점을 따라 투 포인터가 움직인다. 그림 처럼 enQueue()를 하게 ..
-
파라미터로 *(star)와 **(double star) 는 어떤 의미 일까?언어/파이썬 2021. 1. 18. 16:39
가끔 함수의 파라미터로 *와 ** 가 붙어있거나 list등을 인자로 넣어 줄때 function(*some_list) 같이 써있는 것을 볼 수 있다. 이것은 어떤 의미를 나타내는 것일까? 파이썬에서 *는 언팩(unpack)이다. 즉 시퀀스 언팩킹 연산자로 말 그대로 시퀀스를 풀어헤치는 연산자를 뜻하며, 주로 튜플이나 리스트를 언패킹하는데 사용한다. **는 키/값 페어를 언패킹하는 연산자 이다. 매개변수 *args 는 입력을 튜플로 변환하여 모두 받는다. 매개변수 **kwargs는 입력으로 사전형과 같은 key ,value와 같은 형태만을 입력으로 받는다. 파라미터의 변수를 모든것을 사전형처럼 받는다. *args나 **kwargs 모두 일반 파라미터와 혼용해서 사용할 수 있다. 또한 아래와 같은 방법으로도 ..
-
Queue언어/파이썬 2021. 1. 16. 19:06
큐는 시퀀스의 한쪽 끝에는 엔티티를 추가하고, 다른 반대쪽 끝에는 제거할 수 있는 엔티티 걸렉션이다. FIFO(First In First Out)로 처리되는, 줄을. 서는 것에 비유할 수 있는 큐는 상대적으로 스택에 비해서 쓰임새가 적다. 그러나 스택에 비해서 그렇다는 얘기일 뿐, 데크(deque)나 우선순위큐(priority queue) 같은 변형들은 여러분야에서 매우 유용하게 쓰인다. 이외에도 너비우선 탐색(Breadth-First Search)이나 캐시등을 구현할때도 널리 사용된다. 파이썬에는 동일한 이름의 queue라는 모듈이 있긴 하지만 이 모듈은 사실상 자료구조로서의 큐보다는 동기화 기능에 집중된 모듈로, 큐 자료형을 위해 널리 쓰이는 모듈은 아니다. 사실상 파이썬의 리스트가 큐의 모든 연산을..
-
Deque언어/파이썬 2021. 1. 16. 18:56
데크는 양쪽에서 삭제와 삽입을 모두 처리할 수 있으며, 스택과 큐의 특징을 모두 갖고 있다. 구현은 배열이나 연결 리스트 모두 가능하지만 이중 연결 리스트로 구현하는 편이 가장 잘 어울린다. 이중 연결 리스트로 구현하게 되면 양쪽으로 head와 tail이라는 이름의 두 포인터를 갖고 있다가 새로운 아이템이 추가될 때마다 앞쪽 또는 뒤쪽으로 연결 시켜주기만 하면 된다. 당연히 연결 후에는 포인터를 이동하면 된다. 파이썬에서는 데크 자료형을 다음과 같이 collections 모듈에서 deque라는 이름으로 지원한다. collections.deque는 그림 10-1과 마찬가지로 이중 연결 리스트로 구현되어 있다. Deque를 사용하면 맨 앞과 맨 뒤에 엔티티를 추가하거나 삭제할 때 모두 O(1)에 실행이 가능..
-
os.environ언어/파이썬 2021. 1. 14. 17:29
환경 변수 소프트웨어 개발에서 환경 변수는 일반적으로 운영체제 차원에서 설정해주는 변수를 의미한다. 즉, 파이썬 프로그램 안에서 설정되는 변수가 아닌 외부에서 설정되는 변수들을 얘기한다. 어플리케이션 레벨에서 설정하기가 불가능 하거나 어려운 값들을 환경 변수에 저장하는 경우가 많다. 그 예시로 개발모드와 운영모드를 구분하기 위해서 애플리케이션이 돌아가는 환경 자체를 ENV 등의 이름으로 변수화 해야할 때가 있는데 이는 코드 상에 저장하기가 난해하다. 또한 외부 API와 연동하기 위해 사용하는 접근키나 보안키와 같은 인증 정보는 보안 측면에서 코드상에 저장해서는 안된다. 파이썬에서는 개발자들은 실행파일을 실행하기전에 커멘드라인으로 이것들을 주로 미리 세팅을 해놓는다. 또는 이미 os내에서 세팅이 되어있다...
-
== 와 is 의 차이언어/파이썬 2021. 1. 13. 10:01
is는 변수가 같은 Object 를 가르키면 True (같은 Object 인것인지를 확인하기 위해서는 id 함수를 사용하면 된다.) == 는 변수가 같은 Value 를 가리키면 True 이다 또한 신기한 것은 파이썬은 모든것이 다 객체이므로 id 메소드에 숫자를 넣어도 id 값이 나오고 None을 넣어도 id 값이 나오며 이 값은 변하지 않는 값이다. 또한 while 클래스_이름 is not None: 보다는 while not 클래스_이름 : 만 하여도 while 문이 돌아간다. 그 뿐만 아니라 if 문에서도 마찬가지 이다. 즉 조건절, 조건문에서 None은 False의 개념으로 not None 은 True의 개념으로 쓰이는 거 같다. list 에서도 조건문은 작동하는데 만약 list 가 빈상태이면 Fa..
-
with는 왜 쓰는 것일까언어/파이썬 2021. 1. 12. 20:52
with 는 정말 여러방면으로 쓰인다. 대표적인 예로는 파일을 입출력 할 때 많이 쓰이는 것을 알 수 있다. 그렇다면 with는 파일입출력만을 위해서 쓰이는 것일까? 그게 아니라면 어떻게 쓰이고 왜 쓰이는 것일까? 1. 파일 입출력만을 위해 쓰인다. => 아니다. 우선 with를 어떻게 쓰는지 왜 쓰는지 알아야 빠른 이해가 된다. 2. with 는 왜 쓰이는 것일까? => 1. 파일을 다룰때 with 블록을 통해 명시적으로 close() 메소드를 호출하지 않고도 파일을 닫을 수 있다. 2 파일을 닫을때는 파일 내부에 __exit__()가 구현되어있기 때문에 with 블록이 종료될때 자동으로 __exit__() 메소드가 호출되어 파일을 close 하게 된다. 3.클래스를 호출할때도 사용된다.(단 2. 에서..