프로그래밍과 Python을 배우는 가장 좋은 방법은 연습하는 것입니다. 초보자라도 계속해서 코드를 입력하고 출력하는 한 마법 같은 효과가 나타날 것입니다.
특히 Github에는 Python 교육 프로젝트가 많이 있습니다. 초보자와 숙련된 사용자 모두 확인해 보는 것이 좋습니다.
여기서 알고리즘 웨어하우스 알고리즘인 Gitthub의 실습 프로젝트를 추천합니다.
https://github.com/keon/algorithms
정렬, 그래프 컴퓨팅, 역추적, 대기열, 스트림 컴퓨팅, 힙, 검색, 압축 등과 같은 많은 핵심 알고리즘의 Python 구현이 포함되어 있습니다.
이 웨어하우스는 타사 라이브러리 설치를 지원하고 Python으로 호출하므로 매우 편리합니다.
먼저 pip를 사용하여 설치하세요:
pip3 install algorithms
그런 다음 sort 모듈의 merge_sort 병합 정렬 알고리즘과 같은 호출할 관련 모듈을 가져옵니다.
from algorithms.sort import merge_sort if __name__ == "__main__": my_list = [1, 8, 3, 5, 6] my_list = merge_sort(my_list) print(my_list)
몇 가지 일반적인 알고리즘 사례를 인용해 보세요.
def bucket_sort(arr): ''' Bucket Sort Complexity: O(n^2) The complexity is dominated by nextSort ''' # The number of buckets and make buckets num_buckets = len(arr) buckets = [[] for bucket in range(num_buckets)] # Assign values into bucket_sort for value in arr: index = value * num_buckets // (max(arr) + 1) buckets[index].append(value) # Sort sorted_list = [] for i in range(num_buckets): sorted_list.extend(next_sort(buckets[i])) return sorted_list def next_sort(arr): # We will use insertion sort here. for i in range(1, len(arr)): j = i - 1 key = arr[i] while arr[j] > key and j >= 0: arr[j+1] = arr[j] j = j - 1 arr[j + 1] = key return arr
import math def distance(x,y): """[summary] HELPER-FUNCTION calculates the (eulidean) distance between vector x and y. Arguments: x {[tuple]} -- [vector] y {[tuple]} -- [vector] """ assert len(x) == len(y), "The vector must have same length" result = () sum = 0 for i in range(len(x)): result += (x[i] -y[i],) for component in result: sum += component**2 return math.sqrt(sum) def nearest_neighbor(x, tSet): """[summary] Implements the nearest neighbor algorithm Arguments: x {[tupel]} -- [vector] tSet {[dict]} -- [training set] Returns: [type] -- [result of the AND-function] """ assert isinstance(x, tuple) and isinstance(tSet, dict) current_key = () min_d = float('inf') for key in tSet: d = distance(x, key) if d < min_d: min_d = d current_key = key return tSet[current_key]
# Implement the encode and decode methods. def encode(strs): """Encodes a list of strings to a single string. :type strs: List[str] :rtype: str """ res = '' for string in strs.split(): res += str(len(string)) + ":" + string return res def decode(s): """Decodes a single string to a list of strings. :type s: str :rtype: List[str] """ strs = [] i = 0 while i < len(s): index = s.find(":", i) size = int(s[i:index]) strs.append(s[index+1: index+1+size]) i = index+1+size return strs
위 내용은 알고리즘, 가장 포괄적인 Python 알고리즘 웨어하우스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!