在 python 中创建我自己的过滤器函数
Creating my own filter function in python
我需要在 python 中创建我自己的过滤器函数,即它应该 return 只有当 运行 任何给定函数在其上时 return 来自可迭代的值 returns True
或者,如果函数是 None
,如果可迭代本身 returns True
。我的问题是我无法使用 return 只有偶数的函数。
这是我的代码:
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]))
非常感谢任何帮助!
最好提供return甚至
的函数代码
如果我的理解正确,您是在尝试传递一个函数,该函数将 return 所有偶数参数?
如果是这种情况,如果您只传递 int 参数而不是列表、元组或字符串,则可以轻松地做到这一点。
def isEven(x):
if x % 2 == 0:
return True
else:
return False
print(my_own_filter(isEven, 1, 0, -1, 1, 2, 3, 4))
为了使其适用于所有类型,您必须向 my_own_filter 函数添加一些额外的 if 语句。使用 isinstance function,您可以确定是否需要使用 for 循环来循环遍历列表或元组中的所有对象。
这是我想出的用列表和元组来完成这项工作的方法:
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 isinstance(i, int) and isEven(i):
l.append(i)
elif isinstance(i, list) or isinstance(i, tuple):
for x in i:
if isEven(x):
l.append(x)
return(l)
def isEven(x):
if x % 2 == 0:
return True
else:
return False
我需要在 python 中创建我自己的过滤器函数,即它应该 return 只有当 运行 任何给定函数在其上时 return 来自可迭代的值 returns True
或者,如果函数是 None
,如果可迭代本身 returns True
。我的问题是我无法使用 return 只有偶数的函数。
这是我的代码:
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]))
非常感谢任何帮助!
最好提供return甚至
的函数代码如果我的理解正确,您是在尝试传递一个函数,该函数将 return 所有偶数参数?
如果是这种情况,如果您只传递 int 参数而不是列表、元组或字符串,则可以轻松地做到这一点。
def isEven(x):
if x % 2 == 0:
return True
else:
return False
print(my_own_filter(isEven, 1, 0, -1, 1, 2, 3, 4))
为了使其适用于所有类型,您必须向 my_own_filter 函数添加一些额外的 if 语句。使用 isinstance function,您可以确定是否需要使用 for 循环来循环遍历列表或元组中的所有对象。
这是我想出的用列表和元组来完成这项工作的方法:
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 isinstance(i, int) and isEven(i):
l.append(i)
elif isinstance(i, list) or isinstance(i, tuple):
for x in i:
if isEven(x):
l.append(x)
return(l)
def isEven(x):
if x % 2 == 0:
return True
else:
return False