【发布时间】:2020-09-20 02:05:40
【问题描述】:
我需要在 python 中创建自己的过滤器函数,即,只有在其上运行任何给定函数返回 True 或者,如果函数是 None,它应该从可迭代对象返回值,如果可迭代对象本身返回True。我的问题是我无法使用只返回偶数的函数。
这是我的代码:
def my_own_filter(func, *iterable):
l = []
if func is None:
for i in iterable:
if i:
l.append(i)
else:
for i in iterable:
if func(i):
l.append(i)
return(l)
print(my_own_filter(None, 1, 0, -1, (), "hello", 1, 2, 3, 4))
print(my_own_filter(sum, (1, 2, 3), [], [3, 4, 5]))
任何帮助将不胜感激!
【问题讨论】:
-
您遇到了什么错误?在您的示例中,您将
None传递给您的 func 显然不会只返回偶数... -
@acushner ,这不是 python 错误,它更像是一个逻辑错误。我添加了一个调用示例,其中 func 不是 None。
标签: python python-3.x function filter iterable