过滤掉特定术语

时间:2019-06-19 11:30:39

标签: python function math filter derivative

我编写了一个函数,该函数使用导数乘积规则来查找术语的导数:

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

def find_derivative(function_terms):
    new_function = []
    for term in function_terms:

        new_term = find_term_derivative(term)
        new_function.append(new_term)

        filtered_terms = filter(zero_filter, new_term)

find_derivative[(4, 3), (-3, 1)]

Ouputs [(12, 2), (-3, 0)]

但是,我想使用过滤器功能删除所有以零开头的项。

例如 输入[(3, 2), (-11, 0)] 当前输出[(6, 1), (0, -1)]

但是我想过滤并删除第二项,因为它以0开头,因此将其从字典new_function中删除

我正在尝试定义一个过滤器函数,该函数分析每个元组的第一项并检查其是否为0,如果为0,则将其删除。这是使用过滤功能的方式吗?

def zero_filter(variable):
    if new_term [0] = 0:
        return False 
    else:
        return True

1 个答案:

答案 0 :(得分:0)

与其编写一个标记是否应该过滤术语的函数,不如以一个列表理解来结束您的例程。

filtered_list = [v for v in unfiltered_list if v[0]]

您的代码还有其他一些问题,但是由于您没有询问这些问题,因此我将不再赘述。在我向您展示的行中更改变量以使其适合您的例程。


如果您需要Python的filter function,则可以使用它。

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

def find_derivative(function_terms):
    new_function = []
    for term in function_terms:
        new_term = find_term_derivative(term)
        new_function.append(new_term)
    return list(filter(zero_filter, new_function))

def zero_filter(atuple):
    """Note if the first element of a tuple is non-zero
    or any truthy value."""
    return bool(atuple[0])

print(find_derivative([(4, 3), (-3, 1)]))
print(find_derivative([(3, 2), (-11, 0)]))

您想要的打印输出是

[(12, 2), (-3, 0)]
[(6, 1)]

我使用pythonic方法在过滤器中进行了非零检查:不是像atuple[0] != 0那样明确检查该值是否为零,我只是使用{{ 1}}。这意味着bool(atuple[0])None[]{}的值也将被过滤掉。这与您的情况无关。

顺便说一句,自从您开始使用()这个名字,但是在我看来,这并不是最好的名字。也许zero_filter会更好。