#function #loops #filter #tuples #derivative
#функция #циклы #Фильтр #кортежи #производная
Вопрос:
Каждый термин представляет собой один кортеж, например, 2x ^ 3 7x равно (2,3), (7,1) Производная равна (6,2), (7,0)
Когда есть константа, константа должна быть удалена. Например, (2,4), (13,0) вернут только (2,4) .
Вот код для поиска этой производной и отфильтровывания любых констант, таких как (13,0)
def find_derivative(function_terms):
return [(term[0] * term[1], term[1] - 1)
for i, term in enumerate(function_terms)
if term[0] * term[1] != 0]
Хорошо, теперь, чтобы вернуть значение производной в заданной точке, когда указано значение x, я написал
def derivative_at(function_terms, x):
filtered = list(filter(find_derivative, function_terms))
new_value = filtered[0]* x, * [1]
return new_value
find_derivative(three_x_squared_minus_eleven) # [(6, 1)]
derivative_at(three_x_squared_minus_eleven, 2) # 12
Вот где я получаю ошибку типа
TypeErrorTraceback (most recent call last)
<ipython-input-12-5fd5c2308a87> in <module>
1 find_derivative(three_x_squared_minus_eleven) # [(6, 1)]
----> 2 derivative_at(three_x_squared_minus_eleven, 2) # 12
<ipython-input-11-bc3316259675> in derivative_at(terms, x)
9 def derivative_at(terms, x):
10
---> 11 filtered = list(map(find_derivative, terms))
12 return filtered
13
<ipython-input-4-48549a955063> in find_derivative(function_terms)
3 def find_derivative(function_terms):
4 return [(term[0] * term[1], term[1] - 1)
----> 5 for i, term in enumerate(function_terms)
6 if term[0] * term[1] != 0]
<ipython-input-4-48549a955063> in <listcomp>(.0)
4 return [(term[0] * term[1], term[1] - 1)
5 for i, term in enumerate(function_terms)
----> 6 if term[0] * term[1] != 0]
TypeError: 'int' object is not subscriptable
Ответ №1:
Я слишком усложнял. Функция find_derivative(), которая используется для фильтрации любых констант, применяется в нижней части кода:
find_derivative(three_x_squared_minus_eleven)
Этот код отфильтровывает любые константы в терминах.
После этого я использовал комбинацию двух пользовательских функций:
def term_output(term, x):
a = term[0]
b = term[1]
x = x
result = a * x * b
return result
def derivative_at(list_of_terms, x):
outputs = list(map(lambda term: term_output(term, x), list_of_terms))
return sum(outputs)
find_derivative(three_x_squared_minus_eleven) # ([6,1])
derivative_at(three_x_squared_minus_eleven, 2) # 12
Derivative_at() передается отфильтрованный аргумент three_x_squared_minus_eleven и возвращает наш ответ, 12 .