Код: Выделить всё
from functools import lru_cache
def get_horizontal_sum(pl_list: list, col: int, row: int):
S = 0
for c in range(0, col):
S = S + pl_list[c][row]
return S
@lru_cache()
def f_e(A: int, _n: int, sum_pl: int):
return (A / _n) * sum_pl
def calc(arg: list):
S = 0
sums_ = []
vals = []
e = []
filt = arg[0]
n = arg[1]
n_2 = arg[2]
sums_ =[sum(pl) for pl in filt]
all_sum = sum(sums_)
vals = [val for fl in filt for val in fl]
e = [f_e(get_horizontal_sum(filt, n, rows), all_sum, sums_[colns]) for colns in range(0, n) for rows in range(0, n_2)]
for e_, val in zip(e, vals):
if e_ != 0:
S = S + abs(val - e_) / e_
return S
def filt(n_a: int, n_b: int, cords: list):
AB = []
AB = [[0 for x in range(0, n_b)] for i in range(0, n_a)]
for cord in cords:
AB[cord[0] - 1][cord[1] - 1] = AB[cord[0] - 1][cord[1] - 1] + 1
return AB, n_a, n_b
M = 0
K = 0
N = 0
plural_A = []
plural_B = []
cords = []
line = input()
line = line.split(' ')
M = int(line[0])
K = int(line[1])
N = int(input())
for anek in range(0, N):
line = input()
line = line.split(' ')
line_data_1 = int(line[0])
line_data_2 = int(line[1])
plural_A.append(line_data_1)
plural_B.append(line_data_2)
cords.append((line_data_1, line_data_2))
print(calc(filt(max(plural_A), max(plural_B), cords)))
Код: Выделить всё
2 3
5
2 3
1 2
1 1
1 2
2 3
Мне нужно минимизировать время выполнения моего кода Python.
Возможно, наличные — хороший способ решить мою проблему, но мне нужен хотя бы один другой способ сделать это.
Наконец, я хочу получить файл .py с более высокой производительностью, чем он есть.
Я НЕ МОГУ ИСПОЛЬЗОВАТЬ NUMPY и СКОМПИЛИРОВАТЬ СВОЙ КОД!!!
Мне нужен Кстати, это может сэкономить большую часть моего алгоритма, но ускорить его (мне нужно 10%).
Ввод кода — это данные для матрицы. Преобразование матрицы в вектор и в
Код: Выделить всё
for e_, val in zip(e, vals):
if e_ != 0:
S = S + abs(val - e_) / e_
Интерпретатор должен оставаться по умолчанию.
Подробнее здесь: https://stackoverflow.com/questions/790 ... -of-algori