【发布时间】:2016-03-02 11:35:53
【问题描述】:
我正在编写一个搜索功能,我在列表中搜索匹配的单词或字符。好像
def search(seq, db):
return match(db, seq)
其中 match 是一个递归函数,它在列表中搜索并返回一个布尔值。 如何返回包含匹配对象的列表,而不仅仅是 True 或 False?
匹配函数如下所示:
def match(seq, pattern):
if not pattern:
return not seq
elif pattern[0] == '--':
if match(seq, pattern[1:]):
return True
elif not seq:
return False
else:
return match(seq[1:], pattern)
elif not seq:
return False
elif pattern[0] == '&':
return match(seq[1:], pattern[1:])
elif seq[0] == pattern[0]:
return match(seq[1:], pattern[1:])
elif isinstance(seq[0], list):
return match(seq[0], pattern)
elif isinstance(pattern[0], list):
return match(seq, pattern[0])
else:
return False
【问题讨论】:
-
def match(db, seq): return [bool(i) for i in db if i in seq] -
def 匹配是什么意思? match 已经是一个完整的函数,我们只用它来搜索列表。我们需要 search 函数调用 match 函数,然后挑选出匹配的元素。
-
我的意思是匹配函数和我的一样,因为你在调用它?
-
我编辑了帖子并添加了匹配功能,这是我已经完成的功能,所以应该是这样的。
标签: python list python-3.x search