鑑於函數all_subsets(lst)
,我該如何使用遞歸編寫此函數?如何使用遞歸編寫all_subsets函數?
例如輸入的:[1,2,3]
,輸出應該是:[[], [1],[2],[3],[1,2],[1,3],[2,3][1,2,3]]
分配是使用遞歸函數。請幫忙。這是實驗任務的一部分,所以我沒有對此進行評分,但同時,我渴望學習如何編寫這些代碼,並且我不知道我的實驗班中有誰知道如何編寫代碼。
到目前爲止,我有:
def all_subsets(b):
if len(b) == 0:
return ''
else:
lst = []
subsets = all_subsets(b[1:])
for i in b:
lst.append([i])
for i in subsets:
if b[0] not in i:
lst.append([b[0]] + i)
for i in subsets:
if b[1] not in i:
lst.append([b[1]] + i)
return lst
它可以處理[1,2,3]
,但它不能處理還有更大的;加上這段代碼也有奇怪的輸出順序
請參閱http://stackoverflow.com/help/how-to-ask。所有詢問代碼的問題都需要展示提問者自己嘗試解決問題的過程。之後,我們將非常樂意幫助解決您遇到的任何具體問題。 – iCodez 2014-12-03 18:39:33
迭代可能比Python中的遞歸更習慣,這是一個很好的用例。 – 2014-12-03 18:51:21
@Paulo:或者使用'itertools'作爲單行:'itertools.chain.from_iterable(map(functools.partial(itertools.combinations,lst),range(len(lst)+1)))' – Kevin 2014-12-03 19:03:53