✏️ 곱하기를 이용한 2차원 리스트

n,m = 2,2
a_list = [[-1]*m]*n
print(a_list)

 

a_list를 출력해보면 아래와 같이 확인할 수 있다.

a_list  : [[-1, -1], [-1, -1]]

 

 

여기서 원소 값을 변경해보자.

n,m = 2,2
a_list = [[-1]*m]*n
print(a_list)
a_list[0][0] = 1

a_list[0][0] = 1 은 [[-1, -1], [-1, -1]] 에서 0행 0열을 1로 변경하는 코드다.

다시 a_list를 출력해보자.

n,m = 2,2
a_list = [[-1]*m]*n
print(a_list)
a_list[0][0] = 1
print(a_list)

a_list를 출력해보면 아래와 같이 모든 행의 0열 값이 1로 변경된 것을 확인할 수 있다.

a_list : [[1, -1], [1, -1]]

 

왜일까

2차원 리스트 선언시 '곱셉'을 사용하면 '얕은 복사(shallow copy)'로 만들어진다.

따라서 '같은객체'로 곱하기한만큼 만들어진다는 말이다.

 

그렇다면 어떻게 2차원 배열을 선언할까?

'리스트 컴프리헨션'을 사용하면 된다.

n,m = 2,2
a_list = [[-1]*m for _ in range(n)] # 리스트 컴프리헨션 사용
print(a_list)
a_list[0][0] = 1
print(a_list) # 출력 : [[1, -1], [-1, -1]]

 

1. 우선순위 큐(Priority Queue)

우선순위가 가장 높은 순서대로 추출된다.

* 큐(Queue) : 선입선출(FIFO), 가장 먼저 삽입된 데이터가 가장 먼저 추출된다. 

 

2. 힙(Heap)

데이터에서 최대값과 최소값을 가장 빠르게 찾을 수 있도록 만들어진 이진 트리

최대값을 구하기 위한 구조(최대힙, Max Heap), 최소값을 구하기 위한 구조(최소 힙, Min Heap)로 분류 가능

 

3. 우선순위 큐 / 힙

우선순위 큐를 구현할 때는 시간 복잡도 측면에서 힙을 이용하는 것이 훨씬 효율적이다.

 

4. 파이썬에서 제공하는 라이브러리

우선순위큐 라이브러리

from queue import PriorityQueue

pq = PriorityQueue() # 우선순위 큐 생성
pq = PriorityQueue(maxsize=10) # 최대 크기를 10인 우선순위큐

pq.put((1,'a'))
pq.put((0,'b')) # 원소 추가

print(pq.get()) # 출력 : (0, 'b') -> 추출되며 큐에서 삭제됨
print(pq.qsize()) # 출력 : 1

 

힙큐 라이브러리

import heapq

arr = []
heapq.heappush(arr,3) # 힙 원소 추가
heapq.heappush(arr,1)
heapq.heappush(arr,2)

print(arr) # 출력 : [1, 3, 2]

heapq.heappop(arr)

print(arr) # 출력 : [2, 3]

arr2 = [10,2,7,11]
heapq.heapify(arr2) # 배열을 힙으로 변경

print(arr2) # 출력 : [2, 10, 7, 11]

 

주피터 노트북 : 웹브라우저에서 파이썬 코드를 작성하고 실행할 수 있는 파이썬 개발 환경 툴

주피터 노트북 설치 방법 : cmd 창에서 설치하는 방법, 아나콘다를 설치하는 방법 이렇게 2가지가 있음.

해당 포스팅에서는 아나콘다 설치 방법으로 진행.

 

1. 아나콘다 다운로드https://www.anaconda.com/products/distribution

 

Anaconda | Anaconda Distribution

Anaconda's open-source Distribution is the easiest way to perform Python/R data science and machine learning on a single machine.

www.anaconda.com

 

초록색 다운로드 버튼 클릭

 

2. 설치 완료 후 파일 실행

Next  클릭

I Agree 클릭

 

대부분의 경우 본인이 이용하므로 just me 선택.

* Next 화면에서 경로에 한글이 포함되어 있다면 다시 Back해서 이 화면으로 돌아와 All Users를 클릭해야한다고 한다.

 

Next 클릭

두번째에 체크박스 선택된 채로 Install 클릭

설치중

Finish

 

3. 시작메뉴에서 Anaconda3 폴더 생성 확인 후 클릭하여 주피터 노트북 실행

 

cmd 창이 켜지고, 웹 브라우저가 열리면서 주피터 노트북 실행 확인 가능

* cmd 창 종료 시, 웹 브라우저도 닫힘

1. 다운로드  https://www.jetbrains.com/ko-kr/pycharm/download/#section=windows

Community쪽 순수 Python개발용인 검정색 다운로드 버튼 클릭 후 다운로드.

 

2. 첨부파일 실행

 

모두 Next 버튼 클릭 후 마지막에 install 클릭하여 설치. 

Finish 클릭

 

3. 파이참 실행하기

 

시작메뉴 클릭 후 설치된 파이참 클릭하여 실행.

New project 클릭 후

New environment using 으로 create

Python IDLE  : 제일 기본, 거의 쓸 일 없다.

 

Jupyter notebook(웹브라우저) : 파이썬 문법 공부 목적에 가장 적합함.

 

Pycharm : 세로 모니터 사용에 적합함.

+ Recent posts