Heim  >  Artikel  >  Backend-Entwicklung  >  Algorithmen, das umfassendste Python-Algorithmus-Warehouse

Algorithmen, das umfassendste Python-Algorithmus-Warehouse

WBOY
WBOYnach vorne
2023-06-03 08:46:031435Durchsuche

​Der beste Weg, Programmieren und Python zu lernen, ist das Üben. Selbst wenn Sie ein Anfänger sind, werden Sie auf jeden Fall magische Effekte erzielen, solange Sie weiterhin Code eingeben und ausgeben.

Es gibt viele Python-Trainingsprojekte, insbesondere auf Github. Es wird sowohl Anfängern als auch erfahrenen Benutzern empfohlen, es auszuprobieren.

Algorithmen, das umfassendste Python-Algorithmus-Warehouse

Hier empfehle ich Ihnen ein Übungsprojekt zu Gitthub, Algorithmus Warehouse-Algorithmen.

https://github.com/keon/algorithms

Dies enthält eine Sammlung von Python-Implementierungen vieler Kernalgorithmen, wie Sortierung, Graph Computing, Backtracking, Warteschlangen, Stream Computing, Heap, Suche, Komprimierung und mehr.

Algorithmen, das umfassendste Python-Algorithmus-Warehouse

Dieses Warehouse unterstützt die Installation von Bibliotheken von Drittanbietern und ruft diese in Python auf, was sehr praktisch ist.

Verwenden Sie zuerst pip zur Installation:

pip3 install algorithms

Importieren Sie dann relevante Module zum Aufrufen, z. B. den Merge_sort-Merge-Sortieralgorithmus im Sortiermodul.

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)

Zeigen Sie einige häufige Algorithmusfälle.

1. Sortieralgorithmus-Bucket-Sortierung

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. Maschinelles Lernen – Nächste-Nachbarn-Interpolationsmethode

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. String-Dekodierungskodierung#🎜 🎜 #
# 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. Histogrammverteilung

def get_histogram(input_list: list) -> dict:
"""
Get histogram representation
:param input_list: list with different and unordered values
:return histogram: dict with histogram of input_list
"""
# Create dict to store histogram
histogram = {}
# For each list value, add one to the respective histogram dict position
for i in input_list:
histogram[i] = histogram.get(i, 0) + 1
return histogram

Ich persönlich finde, dass die Algorithmen in diesem Lager sehr vollständig sind und zum Üben geeignet sind. ​

Das obige ist der detaillierte Inhalt vonAlgorithmen, das umfassendste Python-Algorithmus-Warehouse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen