mirror of
https://github.com/TheAlgorithms/Python.git
synced 2025-02-17 14:58:10 +00:00
[mypy] Annotates other/scoring_algorithm (#5621)
* scoring_algorithm: Moves doctest into function docstring so it will be run * [mypy] annotates other/scoring_algorithm * [mypy] renames temp var to unique value to work around mypy issue in other/scoring_algorithm reusing loop variables with the same name and different types gives this very confusing mypy error response. pyright correctly infers the types without issue. ``` scoring_algorithm.py:58: error: Incompatible types in assignment (expression has type "float", variable has type "List[float]") scoring_algorithm.py:60: error: Unsupported operand types for - ("List[float]" and "float") scoring_algorithm.py:65: error: Incompatible types in assignment (expression has type "float", variable has type "List[float]") scoring_algorithm.py:67: error: Unsupported operand types for - ("List[float]" and "float") Found 4 errors in 1 file (checked 1 source file) ``` * scoring_algorithm: uses enumeration instead of manual indexing on loop var * scoring_algorithm: sometimes we look before we leap. * clean-up: runs `black` to fix formatting
This commit is contained in:
parent
5c8a6c8247
commit
0fc24e8629
|
@ -20,39 +20,38 @@ We want the vehicle with the lowest price,
|
|||
lowest mileage but newest registration year.
|
||||
Thus the weights for each column are as follows:
|
||||
[0, 0, 1]
|
||||
|
||||
>>> procentual_proximity([[20, 60, 2012],[23, 90, 2015],[22, 50, 2011]], [0, 0, 1])
|
||||
[[20, 60, 2012, 2.0], [23, 90, 2015, 1.0], [22, 50, 2011, 1.3333333333333335]]
|
||||
"""
|
||||
|
||||
|
||||
def procentual_proximity(source_data: list, weights: list) -> list:
|
||||
def procentual_proximity(
|
||||
source_data: list[list[float]], weights: list[int]
|
||||
) -> list[list[float]]:
|
||||
|
||||
"""
|
||||
weights - int list
|
||||
possible values - 0 / 1
|
||||
0 if lower values have higher weight in the data set
|
||||
1 if higher values have higher weight in the data set
|
||||
|
||||
>>> procentual_proximity([[20, 60, 2012],[23, 90, 2015],[22, 50, 2011]], [0, 0, 1])
|
||||
[[20, 60, 2012, 2.0], [23, 90, 2015, 1.0], [22, 50, 2011, 1.3333333333333335]]
|
||||
"""
|
||||
|
||||
# getting data
|
||||
data_lists = []
|
||||
for item in source_data:
|
||||
for i in range(len(item)):
|
||||
try:
|
||||
data_lists[i].append(float(item[i]))
|
||||
except IndexError:
|
||||
# generate corresponding number of lists
|
||||
data_lists: list[list[float]] = []
|
||||
for data in source_data:
|
||||
for i, el in enumerate(data):
|
||||
if len(data_lists) < i + 1:
|
||||
data_lists.append([])
|
||||
data_lists[i].append(float(item[i]))
|
||||
data_lists[i].append(float(el))
|
||||
|
||||
score_lists = []
|
||||
score_lists: list[list[float]] = []
|
||||
# calculating each score
|
||||
for dlist, weight in zip(data_lists, weights):
|
||||
mind = min(dlist)
|
||||
maxd = max(dlist)
|
||||
|
||||
score = []
|
||||
score: list[float] = []
|
||||
# for weight 0 score is 1 - actual score
|
||||
if weight == 0:
|
||||
for item in dlist:
|
||||
|
@ -75,7 +74,7 @@ def procentual_proximity(source_data: list, weights: list) -> list:
|
|||
score_lists.append(score)
|
||||
|
||||
# initialize final scores
|
||||
final_scores = [0 for i in range(len(score_lists[0]))]
|
||||
final_scores: list[float] = [0 for i in range(len(score_lists[0]))]
|
||||
|
||||
# generate final scores
|
||||
for i, slist in enumerate(score_lists):
|
||||
|
|
Loading…
Reference in New Issue
Block a user