python - 将函数列表应用于可迭代列表
问题描述
我需要编写一个接受两个列表作为输入的函数(一个可迭代的列表,一个函数“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
解决方案
您可以简单地遍历每个项目并将函数应用于该项目
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
推荐阅读
- react-player - react-player 库,我想更改默认播放图标
- android - 无法在 Firebase 上创建 7/15 天非购买者应用受众
- algorithm - 在 range[min, max] 中生成 n 个整数,其和为 m
- pycharm - 点击设置pycharm中的书签行
- python - 在 Python 中将数组绘制为具有值的网格
- android - 根据深色模式更改的默认背景颜色 res 是什么?[安卓]
- laravel - gitlab CI/CD 部署 laravel 项目
- python - 如何继续调用 __init__ 函数直到满足某些条件?
- javascript - javascript中的文件夹选择器没有发布确认警报
- python - 在数字海洋上使用 python 电报机器人首次部署时 Webhook 失败