Уменьшение длины массива на основе процента от максимального значения в том же массиве - PullRequest
0 голосов
/ 28 апреля 2019

Я пытаюсь выяснить проблему с кодом уже пару дней, но не повезло. Я уменьшаю длину массива на основе некоторого процента максимального значения в том же массиве, но получаю некоторую ошибку с типом значений. Я также следовал за другим сообщением, но не мог исправить эту ошибку функции и плавать. Может кто-нибудь, пожалуйста, направьте меня, где я делаю не так здесь? Первая маленькая функция дает мне максимальный элемент в массиве, умноженный на некоторое значение процента, как показано ниже:

p = [23, 45.3, 10, 7.56, 5]
percent = 0.15

def max_p(p,percent):
  max_val = max(p) * percent
  return max_val

и затем я вызываю значение из вышеуказанной функции для его функции, как указано ниже:

n_array = [3,2,1,4,5,7]
Olen = len(p)

def rmv(p, n_array,percent):
    max_val = max_p(p,percent)
    for i in p:
        if i < (max_val):
            p.remove(i)
    Nlen = len(p)
    kunfu = Olen - Nlen
    tr_new = n_array[: len(n_array) - kunfu]
    return tr_new

когда я запускаю все, он выдает ошибку

max_val = max(p) * percent
TypeError: unsupported operand type(s) for *: 'function' and 'float'

Я пытался использовать str и float для выравнивания max (p) и процентов по совместимому формату, но все равно это выдает ошибку типа: function and float или str и int и т. Д. Я вызываю функцию таким образом

p = [23, 45.3, 10, 7.56, 5]
n_array = [3,2,1,4,5,7]
percent = 0.15
ans = rmv(p, n_array,percent)
print ans

1 Ответ

0 голосов
/ 29 апреля 2019

Запуск кода как, без выдачи ошибок:

def rmv(p, n_array,percent):
    max_val = max_p(p,percent)
    for i in p:
        if i < (max_val):
            p.remove(i)
    Nlen = len(p)
    kunfu = Olen - Nlen
    tr_new = n_array[: len(n_array) - kunfu]
    return tr_new

def max_p(p,percent):
    max_val = max(p) * percent
    return max_val

p = [23, 45.3, 10, 7.56, 5]
Olen = len(p)
n_array = [3,2,1,4,5,7]
percent = 0.15
ans = rmv(p, n_array,percent)

print(ans)
...