> 백엔드 개발 > 파이썬 튜토리얼 > 알고리즘, 가장 포괄적인 Python 알고리즘 웨어하우스

알고리즘, 가장 포괄적인 Python 알고리즘 웨어하우스

WBOY
풀어 주다: 2023-06-03 08:46:03
앞으로
1516명이 탐색했습니다.

프로그래밍과 Python을 배우는 가장 좋은 방법은 연습하는 것입니다. 초보자라도 계속해서 코드를 입력하고 출력하는 한 마법 같은 효과가 나타날 것입니다.

특히 Github에는 Python 교육 프로젝트가 많이 있습니다. 초보자와 숙련된 사용자 모두 확인해 보는 것이 좋습니다.

알고리즘, 가장 포괄적인 Python 알고리즘 웨어하우스

여기서 알고리즘 웨어하우스 알고리즘인 Gitthub의 실습 프로젝트를 추천합니다.

https://github.com/keon/algorithms

정렬, 그래프 컴퓨팅, 역추적, 대기열, 스트림 컴퓨팅, 힙, 검색, 압축 등과 같은 많은 핵심 알고리즘의 Python 구현이 포함되어 있습니다.

알고리즘, 가장 포괄적인 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)
로그인 후 복사

몇 가지 일반적인 알고리즘 사례를 인용해 보세요.

1. 정렬 알고리즘 - 버킷 정렬

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
로그인 후 복사

2. 머신러닝 - 최근접 이웃 보간법

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]
로그인 후 복사

3. 문자열 디코딩 및 인코딩

# 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
로그인 후 복사

4. 개인적으로 이 웨어하우스의 알고리즘은 연습에 매우 적합합니다. 친구들이 시도해 볼 수 있습니다.

위 내용은 알고리즘, 가장 포괄적인 Python 알고리즘 웨어하우스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:51cto.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿