我试图提供一个递归方法,当给定一个课程列表时,它提供所有可能组合的列表。E、 g菜=[主菜,甜点] 到目前为止,我得到的是:
Entree = ["pumkinsoup","antipasto"]
Dessert = ["cheesecake", "icecream", "tiramisu", "cheeseplatter"]
courses = [Entree, Dessert]
def make_orders(courses):
dishes_so_far = []
recursive_make_orders(dishes_so_far, courses)
def recursive_make_orders(dishes_so_far, courses):
n = len(courses)
if n==0 :
print(dishes_so_far)
else:
current_courses = courses[0]
for D in current_courses:
dishes_so_far.append(D)
recursive_make_orders(dishes_so_far , courses[1:len(courses)])
\n我试图使它打印出组合,如[[pumkinsoup,cheesecake],[punkinsoup, icecream]]
等等,但实际上它给了我[pumkinsoup, cheesecake, icecream]
等等。在
尝试用addition而不是append来添加它,但它给了我一个错误。在
这是作业,所以需要递归方法。在
如果需要递归版本,可以执行以下操作:
您的版本并不像您所说的那样工作,因为
courses
现在是一个列表列表,courses[0]
只是Entree
,所以您从Entree
递归地构造新列表。在离你不远了-使用
itertools.product
和*courses
将其解包:相关问题 更多 >
编程相关推荐