【发布时间】:2021-05-12 22:39:04
【问题描述】:
我正在尝试解决以下问题:有一个类似下面的列表:
["hi", "ih", "ciao", "aoic", "bar", "foo", "rab", "oof"]
并且在被传递给函数之后,列表应该被简化为只出现在列表中的那些元素,不包括它们之后的所有字谜。
所以它应该输出:
["hi", "ciao", "bar", "foo"]
我正在尝试以递归方式解决这个问题,并拥有当前的解决方案,该解决方案由于变量结果(最后返回 stmt)上的“赋值前引用”错误而中断。
非常感谢任何提示!
def f(ls):
def is_not_ana(first, word):
return not sorted(first) == sorted(word) and word or None
if ls:
first = ls[0]
rest = ls[1:]
legal_str = [is_not_ana(first, word) for word in rest]
result = list(filter(None, [first] + legal_str))
return f(result[1:])
else:
return result
【问题讨论】:
标签: python recursion variable-assignment anagram