我在网上找到了一个函数,它生成一组的所有子多组,然后返回它们。但是当我浏览代码以了解它的实际作用时,我真的被卡住了。
这是代码:
def build_substrings(string):
""" Returns all subsets that can be formed with letters in string. """
result = []
if len(string) == 1:
result.append(string)
else:
for substring in build_substrings(string[:-1]):
result.append(substring)
substring = substring + string[-1]
result.append(substring)
result.append(string[-1])
return result
现在,假设我用争论“ab”来称呼它。基本情况被忽略,所以我进入 else 块并再次调用该函数,现在参数是“a”。我到达了基本情况,它在结果中附加了“a”。现在我返回结果。for 循环现在已“激活”。子字符串被分配“a”,并附加到结果列表中。现在,我在名为 'result' 的列表中添加了两次“a”。不知何故,在输出中它只显示一次。非常感谢您的帮助。