根据同一数组中最大值的百分比减少数组的长度

时间:2019-04-28 19:04:24

标签: python python-2.7 function

自几天以来,我一直在尝试解决代码的问题,但是没有运气。我正在基于同一数组中最大值的某个百分比减少数组的长度,但是在值的类型上却遇到了一些错误。我也关注了其他帖子,但无法修复此功能错误和浮动。有人可以指导我我在哪里做错了吗?第一个小函数是给我数组中的最大元素乘以某个百分比值,如下所示:

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)和percent对齐为兼容格式,但仍然会给出类型错误:function和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 :(得分:0)

以相同的方式运行代码,不会出现任何错误:

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)