2016-11-21 3 views
-4

я должен сделать следующее:Оценка функции в Python

A function eval_f(f, xs) which takes a function f = f(x) and a list xs of values that should be used as arguments for f. The function eval_f should apply the function f subsequently to every value x in xs, and return a list fs of function values. I.e. for an input argument xs=[x0, x1, x2,..., xn] the function eval_f(f, xs) should return [f(x0), f(x1), f(x2), ..., f(xn)].

import math 


def eval_f(f, xs): 

    x = [] 
    f = f(x) 
    for i in range(len(xs)): 
     f.append(f(x[i])) 
    return f 

eval_f (Math.sqrt, [1, 2, 4, 9]) Traceback (самый последний вызов в прошлом):

Файл "", строка 1, в eval_f (Math.sqrt, [1, 2, 4, 9])

Файл "C: /Users/Idoia/untitled2.py", строка 6, в eval_f f = f (x)

TypeError: требуется поплавок

+3

И? Что происходит? –

+2

В чем вопрос? –

+0

Он показывает ошибку, говоря, что ему нужен плавающий –

ответ

0
def test(x): 
    return x*2 

def eval_f(f, xs): 
    ans = [] 
    for x in xs: 
     ans.append(f(x)) 
    return ans 

print(eval_f(test,[1,2,3,4,5])) 

Печатает:

[2, 4, 6, 8, 10] 
+0

Спасибо, что это отлично! –

+0

Я понимаю, что это, вероятно, какая-то домашняя работа, где они хотят детального решения, но в python вы можете просто сделать «map (f, list)» для замены цикла. – pie3636

+0

Это правда. Подробнее «Pythonic» – abacles

1

for an input argument xs=[x0, x1, x2,..., xn] the function eval_f(f, xs) should return [f(x0), f(x1), f(x2), ..., f(xn)].

Вы хотите map функцию f по списку

При использовании Python3,

def eval_f(f, xs): 
    return list(map(f, xs)) 

Вы можете удалить list() для python2

Смежные вопросы