【发布时间】:2016-02-06 22:32:02
【问题描述】:
我是 Python3 的新手,正在尝试做一个递归的 powerset 函数。它应该使用列表理解。
我写道:
def powerset(seq):
if not seq:
return [[]]
return powerset(seq[1:]) + [[seq[0]] + n for n in powerset(seq[1:])]
此函数有效,但我收到反馈并被告知没有必要调用该函数两次。它做了很多计算。它应该能够轻松计算多达 20 个 powerset。那我该怎么办?如果不调用该函数两次,我将无法使其工作。谢谢。
【问题讨论】:
-
你知道如何将函数的返回值保存到变量中,然后使用该变量吗?
-
你的意思是 res += res + [[seq[0] + n for n in powerset(seq[1:])] 其中 res 是一个空列表?还是我完全错了?
-
完全错误,很遗憾。你知道
subset = powerset(seq[1:])是什么意思吗? -
将其存储在变量中?您在下面写的列表理解中的子集是什么意思?
-
这是一个元组文字。如果您不熟悉元组,那么无论您学习 Python 所经历的一切,都有望很快涵盖它们。 Python tutorial 可能有助于更详细地解释基础知识,而不是适用于 Stack Overflow cmets。
标签: python python-3.x recursion powerset