반응형

프로그래밍언어 22

[Python] 병합 정렬 쉽게 이해하기

정렬의 종류는 다양하다. 그중에 병합 정렬을 쉽게 이해하기 위한 글을 작성해봤다. 1. 병합 정렬 병합 정렬은 Big O 시간 복잡도는 O(n log n) 의 복잡도가 나온다. 아래 사진과 같은 방법으로 소팅한다. (사진 출처 : '모두의 알고리즘 with 파이썬' 책) '모두의 알고리즘 with 파이썬' 책에 그림으로 소팅 과정을 쉽게 설명되어있다. 1. 리스트를 절반으로 나눕니다. 2. 1에서 나눈 리스트를 정렬합니다. (이곳에서 재귀함수 사용) 3. 각각의 리스트에서 가장 앞의 인원을 비교해서 작은 인원을 정렬합니다. (계속 반복) 2. 병합 정렬 소스코드 구현 소스 코드로 구현하면 아래와 같습니다. 혹시 재귀함수에 대해서 모르시는 분을 위해서 링크를 걸어두겠습니다. ([Python] 재귀함수 간단..

[Python] 재귀함수 간단예제 - 팩토리얼 구현

재귀함수는 함수에서 자신을 다시 호출하면서 반복하는 함수를 말합니다. 재귀함수를 사용하지 않고 팩토리얼을 구현해보고, 재귀함수를 사용해서 팩토리얼을 구현해보도록 합니다. 재귀함수의 일반적인 형태는 아래와 같습니다. 종료 조건을 충분히 작은 조건을 넣어서 종료가 되도록 구현해한다. (종료 조건이 없으면 무한루프) 재귀함수 일반적인 형태 def func(입력 값): if 입력 값이 충분히 작으면 : # 종료 조건 return 결과값 func(입력 값 보다 하나 작은 값) return 결과값 1. 재귀함수 없이 팩토리얼 구현 팩토리얼은 5! 이라고 하면 1x2x3x4x5 = 120 입니다. 소스 코드 # 1.재귀함수 사용 없는 팩토리얼 def fact(n): f = 1 for i in range(1,n+1):..

[Python] 리스트 안의 for문으로 생성하기 - 리스트 컴프리헨션

리스트 컴프리헨션은 반복문의 표현식 대괄호[ ] 안에 반복문을 넣어서 리스트를 생성할 수 있다. 아래 순서로 예제를 살펴 보도록 하자 1. [ 항목 for 항목 in 반복 가능한 객체 ] 2. [ 표현식 for 항목 in 반복 가능한 객체 ] 3. [ 항목 for 항목 in 반복 가능한 객체 if 조건문 ] 1. [ 항목 for 항목 in 반복 가능한 객체 ] 리스트를 반복가능한 객체를 넣어서 생성할 수 있다. 소스 코드 list1 = [x for x in range(1,11)] print(list1) 결과 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 2. [ 표현식 for 항목 in 반복 가능한 객체 ] 표현식을 사용해서 반복객체의 계산을 한 리스트를 생성할 수 있다. 소스 코드 list2..

[Python] 다중 리스트(List) 정렬 방법 - 인덱스 우선순위

다중 리스트 또는 튜플을 사용하게 되면, 정렬에 대해서 고민이 생긴다. 다중 리스트 정렬 방식 중에서 가장 쉽고 다양하게 응용할 수 있는 lamda 식을 정리 했다. 아 그리고 설명하기 앞서서, sort와 sorted의 차이는 기존 리스트에서 변경하는 것과 신규로 리스트를 반환하는 것의 차이다. 아래 예제들은 sort를 이용했다. sorted에서의 key 값에 아래 내용을 넣어도 같은 결과를 얻을 수 있다. 0. 다중 리스트 선언 먼저, 다중리스트 하나를 만들어보자. 소스 코드 items = [['item1', '10', 15], ['item6', '11', 15], ['item3', '3', 4], ['item2', '17', 8], ['item4', '16', 8], ['item5', '18', 8]..

[Python] List 중복 값 제거하기 - set

set이라는 자료구조를 이용해서 list의 중복 값을 제거해보겠습니다. 1. set 자료구조 set이라는 자료구조는 값들의 중복을 허용하지 않습니다. {}(중괄호)를 통해 표현됩니다. 소스 코드 # Set 이라는 자료구조 set1 = set([1, 3, 4, 5, 6, 6, 7, 1]) set1.add(1) set1.add(8) print('타입 :', type(set1)) print('값 :', set1) 결과 타입 : 값 : {1, 3, 4, 5, 6, 7, 8} 2. list를 set을 사용해서 중복 값 제거하기 리스트를 set으로 변환하고, 다시 리스트로 반환하면 됩니다. 소스 코드 # list를 Set으로 중복 제거하기 (list -> set -> List) list1 = [1, 1, 1, 3,..

[Python] if all/any 사용해서 list 조건 찾기

if all/any 을 사용해서 list 안의 값를 가지고 조건문이 실행되는 것을 확인해 보자. 1. if all if all은 리스트의 값이 조건에 모두 만족해야지 실행된다. 아래 내용을 보면 리스트의 값이 1~10까지 들어가있다. 이 값은 모두 15보다 작기 때문에, if 조건문을 만족한다. 소스 코드 list1 = list(range(1, 11)) print(list1) if all(15 > x for x in list1): print('리스트의 값이 모두 15보다 작다') else: print('리스트의 값이 하나라도 15와 같거나 크다') 결과 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 리스트의 값이 모두 15보다 작다 2. if any if any는 리스트의 값이 하나라도 조건에..

[Python] enumerate로 list index, value을 튜플로 반환하기

enumerate를 설명하기 전에 random 라이브러리로 shuffle을 사용해서 리스트를 한번 섞어줍니다. 1. random 을 사용해서 list shuffle 하기 (순서를 섞어줍니다.) 소스 코드 import random as rd list1 = list(range(1,11)) print("shuffle전:",list1) # random 으로 list 순서 섞기 (shuffle) rd.shuffle(list1) print("shuffle후:",list1) 결과 shuffle전: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] shuffle후: [3, 9, 8, 4, 10, 5, 6, 1, 7, 2] 2. 위에서 생성한 list를 enumerate로 튜플로 반환해봅니다. enumerate로..

[Python] String을 List로 변환, List를 String으로 변환

str 타입을 좀 자유롭게 변경하거나 하고싶으면, list로 변환해서 작업하면 수월할 수 있다. 그래서 string을 list로 변환하고, (작업하고), 다시 list를 string으로 돌아오기 위한 간단한 예제를 살펴 보도록 하자 1. String -> List 변환 : list 함수 list 함수를 사용하면 str 타입을 간단하게 list화 할 수 있다. 소스 코드 # 1. string 을 list로 변환하는 법 text = "string" list1 = list(text) print('list(text):', list1) 결과 list(text): ['s', 't', 'r', 'i', 'n', 'g'] 2. List -> String 변환 : join 함수 '넣을 문자.join(리스트)' 이런식으로..

[Python] 파이썬 for else 문 사용하기

파이썬을 사용하다가 유용하게 사용할 만한 for else문을 발견했다. 사용방법은 간단하다. 1. for else문 사용방법 소스 코드 for i in range(9): #반복될것 작성 else: #반복이 온전하게 끝나면 실행 else문은 for문이 break 없이 온전하게 완료되면 작동한다. 아래 예제를 보자. 예제1) 중간에 break 문으로 빠저나오는 경우에는 else 문 실행 안됨 소스 코드 # 중간에 break 문으로 빠저나오는 경우에는 else 문 실행 안됨 for i in range(10): print(i) if i == 5: break else: print('else문 실행') 결과 0 1 2 3 4 5 예제2) 중간에 break 문으로 빠저 나오지 않고, for문이 모두 돌았을 경우 el..

Jupyter Notebook 주피터 노트북 사용 방법

0. 주피터 노트북 특징 주피터 노트북은 대표적인 대화형 파이썬 툴 대화형 툴이라는 말은 마치 선생님이 학생들에게 설명하듯이 프로그래밍과 이에 대한 설명이 결합했다는 뜻 전체 프로그램에서 특정 코드 영역별로 개별 수행을 지원한다. 영역별 코드 이해가 매우 명확하게 설명될 수 있다. 1. 주피터 노트북 사용방법 1) 아나콘다를 설치 했으면 주피터 노트북이 설치됩니다. (아나콘다 설치 방법 클릭) 2) 디렉토리 리스트가 웹 창으로 뜨게 된다. 3) 오른쪽 New 버튼에서 새로운 폴더 생성한다. 생성된 폴더는 Untitled Folder로 생성이 됩니다. 4) 해당 폴더를 Rename 하겠습니다. 저는 이름을 'Shoney_Test_Project' 로 정해봤습니다. 5) 자신이 만든 폴더에서 Python3 실..

반응형