본문 바로가기

파이썬

[파이썬][자료구조] 데크(deque)에 대한 모든 것 (정의, 함수, 활용) 1. Deque(데크) 정의 Deque는 "double-ended que"의 약자로 스택과 큐를 일반화 한 것이다. List의 경우 고정 길이 연산에 특화되어 있으며, pop(0)과 insert(0, v) 연산에 대해 O(n)의 메모리 비용이 필요한 반면 Deque의 경우 추가(append)와 꺼내기(pop) 연산을 O(1)의 속도로 지원한다. Deque는 maxlen이 지정되지 않거나, None이면 Deque의 길이는 임의로 커질 수 있다. 그렇지 않을 경우 지정된 최대 길이로 제한된다. Deque가 가득 차게 될 경우, 반대편에 있는 원소가 삭제되고 최대 크기를 유지한다. 2. Deque 함수들 함수 실행시간 설명 append(x) O(1) 데크의 오른쪽에 x를 추가합니다. appendleft(x) .. 더보기
[Python] Set() 함수 정의, 예시, 집합 연산, 다양한 사용법 1. Set과 리스트, 튜플과의 비교 List와 tuple은 연속적으로 데이터를 저장하는 표준 파이썬 데이터 타입이다. Set도 마찬가지로 데이터를 저장하는 표준 파이썬 데이터 타입이다. 가장 큰 다른 점은 Set은 원소의 중복을 허용하지 않으며, 정렬되지 않은 값을 저장한다. Set은 불변 데이터만을 포함한다. (integer, float, string, tuple) 불변 데이터를 저장하고, 중복을 제거하고 싶을 때 Set이 유용할 수 있다. Set은 또한 교집합, 배집합 등 다양한 함수를 제공한다. 2. Set 생성방법 결과를 보면 Python, R, SQL, Git 순으로 결과가 출력되어야 하나 순서가 바뀌어서 출력된다. 이게 바로 Set이 정렬되지 않는 것을 말한다. emptySet = set().. 더보기
[파이썬][자료구조] Counter 설명, 예시, 문자열, 파일에서 알파벳 세기 1. Counter Counter는 dict의 서브클래스로 파이썬에서 해싱가능한 개체를 세기 위해 설계됐다. 객체를 key로 개수를 value로 저장하는 딕셔너리이다. Counter를 이용하기 위해서는 연속되거나, 반복 가능한 객체를 인자로 제공해야 한다. 2. Counter를 이용한 예시 from collections import Counter #문자열을 인자로 사용 Counter("mississippi") #리스트를 인자로 사용 Counter(list("mississippi")) Output Counter({'m': 1, 'i': 4, 's': 4, 'p': 2}) 3. set()을 이용해 1로 초기화하기 파이썬의 set은 unique 객체를 저장한다. (중복되지 않는) 아래 예제에서는 중복되는 알파.. 더보기
[파이썬 자료구조] 파이썬에서 배열과 리스트의 차이 1. 파이썬에서 리스트란? 리스트는 파이썬에 내장된 데이터 구조로 items의 collection을 가진다. 리스트의 아이템들은 대괄호로 묶인다. [item1, item2, item3] 리스트는 정렬되어 있다. 인덱스로 각 아이템에 접근할 수 있게 해 준다. 리스트는 변경 가능하다. 리스트가 만들어지고 추가하거나 제거할 수 있다. 리스트는 중복가능하다. 인덱스로 관리되므로 [item1, item1]도 가능하다. 리스트는 여러 가지 데이터 타입이 가능하다. 같은 리스트에 object, string, integer를 합칠 수 있다. 코드 list = [1,2,3,4,5] print(list) print(type(list)) 결과 [1, 2, 3, 4, 5] 2. 파이썬에서 배열이란? 배열도 리스트와 같 파이.. 더보기
[파이썬 자료구조] 간단히 표로 보는 배열과 스택의 차이 1. 배열과 스택의 차이 배열 스택 원소들의 집합은 0으로 시작하는 인덱스로 식별되는 데이터 구조 LIFO 원칙을 따르는 추상 데이터 타입의 원소들의 집합 각 원소들은 같은 데이터 타입을 가진다 원소들은 데이터 타입이 다를 수 있다. 랜덤 액세스는 (Read, Write) 인덱스로 자유롭게 접근 가능 원소들은 LIFO 원칙을 따른다. Top 부분의 원소 접근만 가능 지원되는 함수가 많다. (find ,sort, reverse, push pop etc...) 한정적 함수. push, pop, peek 하나의 데이터 타입이다. 하나의 추상적 자료형이다. 어떤 데이터 타입을 사용할지 알고, 각 원소에 대해 지속적 변경이 필요할경우 유용하다. 어떤 데이터를 처리할 지 모를 때 동적으로 처리가 가능하며, 빠른 접.. 더보기
[파이썬 자료구조] 스택의 개념, 특징 (리스트, 디큐로 구현) 0. 스택의 정의 스택은 FILO(선입후출) 또는 후입선출(LIFO) 방식으로 아이템을 저장하는 선형 데이터 구조이다. 스택에서는 한쪽 끝에 새로운 원소가 추가되고, 그 끝에서만 원소가 삭제된다. 이러한 작업을 push 및 pop이라고 한다. 쉽게 설명하면 박스는 아래에서 위로 쌓고, 아래 박스를 치우기 위해서는 위에서부터 박스를 내린다. 1. 스택에서 지원하는 함수 empty() : 스택이 비어있는지 리턴한다. [시간복잡도 O(1)] size() : 스택의 크기를 리턴한다. [시간복잡도 O(1)] top() / peek() : 스택의 제일 윗부분 원소의 참조를 리턴한다. [시간 복잡도 O(1)] push(A) : 스택의 제일 윗 부분에 A라는 원소를 추가한다. [시간 복잡도 O(1)] pop() : 스.. 더보기
[Python] Google 검색창 자동 검색하기 (Selenium 활용, 환경구축) 0. 크롤링을 위한 기본 환경 구축하기 Anaconda의 JupyterNotebook 설치하기 명령 프롬포트에서 pip install selenium으로 selenium 패키지 설치하기 selenium은 웹 드라이버 프로그램을 이용해서, 웹 페이지를 열고, 사람이 지정한 태그를 이용해 데이터를 수집한다. Chrome Driver 설치하기 (밑에 사진으로 추가 설명) 0-1 먼저 Chrome의 버전 확인하기 Chrome 인터넷을 킨 뒤에 위 사진의 오른쪽 상단에 ...을 클릭한다. 그러면 아래 사진처럼 보일 것이다. 그리고 Chrome 정보를 클릭하면 크롬의 버전을 확인할 수 있다. 그러면 Chrome 버전을 확인할 수 있다. 나는 크롬 버전이 102이므로 102에 맞는 드라이버를 설치하면 된다. 0-2 .. 더보기
[Python] Selenium 오류 간단히 해결하기 (Jupyter Notebook) 0. Selenium 오류 메세지 파이썬으로 크롤링 공부를 하던 와중 ModuleNotFoundError : No module named 'selenium'이라는 오류가 나왔다. 분명히 명령어 프롬포트에서 pip install selenium을 했고, 설치에도 문제가 없었다. 이 글은 Anaconda Jupyter을 사용할 때 생긴 문제이다. 오류 메세지는 다음과 같았다. 1. 해결방법 (anaconda promt) (Anaconda, Spyder 쓸 때) 아마 쥬피터 노트북과 버전이 달라서 생기는 오류가 아닐까라고 생각한다. 1-1 Anaconda Promt을 연다. 1-2 conda install selenium을 입력하여 다운로드를 한다. 1-3 proceed로 진행할 거냐고 물어보면 y로 동의한다.. 더보기