我正在尝试编写一个过滤函数,该函数向我传递一个字典单词列表,这些单词可以由机架中的字母组成。
def test(Rack, word):
"""test whether a string can be formed with the letters in the Rack."""
if word == "" or Rack == []:
return True
elif word[0] in Rack:
return True and test(Rack, word[1:])
else:
return False
然后我的地图功能需要测试功能。
def stringsInDic(Rack, dictionary):
return filter(test(Rack, dictionary) == True, dictionary)
但正如我们所看到的,过滤器的第二个输入应该是字典中的一个元素,这是过滤器放入的元素。所以我不确定如何在test中编写第二个参数。
请帮忙!!!谢谢!
答案 0 :(得分:2)
您可以使用functools.partial
:
def stringsInDic(Rack, dictionary):
func = functools.partial(test, Rack)
return filter(func, dictionary)
partial
允许您创建一种占位符函数,您可以在以后添加更多参数。因此func
变为test(Rack, ...)
。如果您稍后致电func(something)
,那么您确实正在执行test(Rack, something)
。