отфильтровывая конкретные производные - PullRequest
0 голосов
/ 19 июня 2019

Я сгенерировал несколько функций.

find_derivative просто берет производную нескольких членов, используя правило произведения, и создает новое уравнение.

Так что, если я введу 3x ^ 2 + 2x ^ 3

Я получаю 6x + 6x ^ 2

на выходе [(6,1), (6,2)]

Однако я хочу отфильтровать в любое времяв итоге получим кортеж, который начинается с 0

def find_derivative(function_terms):
    new_function = []
    for term in function_terms:
        new_term = find_term_derivative(term)
        new_function.append(new_term)
        filtered_list = list(filter(lambda x: x != 0, new_function))
    return filtered_list

Ожидаемый результат от входа [(3, 2), (-11, 0)] должен быть [(6, 1)], ноэтот код не удаляет второе слагаемое, [0, -1]

РЕДАКТИРОВАТЬ: производная функция

def find_term_derivative(term): 
    x, y = term
    new_term = (x*y, y-1)
    return new_term 

1 Ответ

0 голосов
/ 19 июня 2019

У вас есть правильная идея с фильтром, но взгляните на лямбду, которую вы написали. Вы фильтруете условие lambda x : x != 0, которое проверит, не равен ли элемент в списке нулю.

Но элементы в вашем списке являются кортежами, и вы хотите проверить, равен ли только первый номер в кортеже нулю, поэтому вам нужно обновить свое состояние, чтобы оно было lambda x : x[0] != 0.

...