列表組合的綜合生成:一種數值高效的方法
考慮15 個數字的列表,目標是獲得所有32,768 個組合,無論它們的長度如何。一種建議的方法涉及迭代十進制整數 (1-32768) 並利用二進位表示來選擇元素。雖然這種方法看起來可行,但有更有效的解決方案。
利用 itertools 模組
Python itertools 模組提供了一種產生組合的綜合方法。它的功能之一,組合,允許產生特定長度的組合。然而,本例的目標是產生任意長度的組合。
為了解決這個問題,可以使用 range 函數遍歷所有可能的長度「L」:
import itertools stuff = [1, 2, 3] for L in range(len(stuff) + 1): for subset in itertools.combinations(stuff, L): print(subset)
This方法確保產生給定清單的所有組合,無論其長度如何。
複雜性和的替代方法優雅
為了一種更靈活且具有潛在視覺吸引力的方法,可以利用生成器鏈創建一系列的combinations( )生成器,覆蓋所有可能的長度:
from itertools import chain, combinations def all_subsets(ss): return chain(*map(lambda x: combinations(ss, x), range(0, len(ss)+1))) for subset in all_subsets(stuff): print(subset)
透過採用這種方法,可以輕鬆產生給定清單的所有可能組合,從而提供可靠的解決方案。
以上是我們如何在Python中高效地產生列表的所有可能的子集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!