我有以下任务:
编写一个名为“ apply_functions”的函数
接受两个列表作为输入: 第一个列表将是可迭代的列表 第二个列表将是,和
函数的一部分返回一个长度与第一个列表相同的列表,其中该列表中的每个元素 是一个 tuple ,其中已应用了第二个列表中的功能。
例如如果列表是[[1,2 ,, [3,4]]和[len,sum,type],则返回应为: [(2,3,tuple),(2,7,list)]。 注意,元组的顺序为(长度,总和,类型);与传递的函数顺序相同
以下是输出的示例:
objs = [(1,2),[1,3,4,5,6,7],[0]]
funcs = [len,sum]
print(apply_functions(objs, funcs))
Output --> [(2, 3), (6, 26), (1, 0)]
这是我当前的代码,但是它只返回对obj和funcs的第一项的正确答案:
def apply_functions(list_of_objs, list_of_funcs):
list1 = ()
for n in list_of_objs:
tup = ()
for f in list_of_funcs:
tup += (f(n),)
return tup
list1 += tup
return list1
答案 0 :(得分:0)
您可以简单地遍历每个项目并将功能应用于该项目
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
答案 1 :(得分:0)
objs = [(1,2),[1,3,4,5,6,7],[0]]
funcs = [len,sum]
m = [list(map(fun, objs)) for fun in funcs]
list(zip(m[0],m[1]))
输出:
[(2, 3), (6, 26), (1, 0)]
答案 2 :(得分:0)
请尝试以下代码:
x=[(1,2),[3,4]]
f=[len,sum,type]
z=[map(y,x) for y in f]
result=[tuple(z[j][i] for j in range(len(z))) for i in range(len(z[0]))]