首页 > 解决方案 > 将函数列表应用于可迭代列表

问题描述

我需要编写一个接受两个列表作为输入的函数(一个可迭代的列表,一个函数“len”、“sum”和“type”的某些子集的列表)

该函数应该返回一个与第一个列表长度相同的列表,其中该列表中的每个元素都是一个元组,其中应用了第二个列表中的函数。


这是我当前的代码,但它只返回 obj 和 funcs 的第一项的正确答案:

def apply (list_items, list_funcs):
    list1 = ()
    for n in list_items:
        tup = ()
        for f in list_funcs:
            tup += (f(n),)
        return tup
        list1 += tup

    return list1

标签: python

解决方案


您可以简单地遍历每个项目并将函数应用于该项目

def apply(items, funcs):

    output = []
    #Loop over the items
    for item in items:
        #Apply function over each item and add it to result
        output.append(tuple(func(item) for func in funcs))

    return output

print(apply([(1,2),[3,4]], [len, sum, type]))
print(apply([(1,2),[1,3,4,5,6,7],[0]], [len,sum]))

输出将是

[(2, 3, <class 'tuple'>), (2, 7, <class 'list'>)]
[(2, 3), (6, 26), (1, 0)]

或单行列表理解

def apply(items, funcs):

    # Loop over the items, apply function over each item and add it to result
    output = [ tuple(func(item) for func in funcs) for item in items ]

    return output

推荐阅读