從數字列表中獲取所有可能的組合
任務是獲取列表元素的所有可能組合(2^N) ,無論其長度如何。
暴力破解方法
一種可能的方法是循環遍歷十進制整數1-32768 並使用它們的二進位表示形式作為過濾器來選擇相應的列表元素。但是,此方法的時間複雜度為 O(32768),對於大型清單來說效率較低。
最佳化解決方案
更有效率的解決方案是使用itertools 函式庫。以下程式碼在 Python 中產生列表元素的所有可能組合:
import itertools stuff = [1, 2, 3] combinations = list(itertools.chain(*map(lambda x: itertools.combinations(stuff, x), range(0, len(stuff)+1)))) for subset in combinations: print(subset)
此程式碼產生給定列表的所有子集,包括空集和原始列表本身。它透過建立一個生成器來為每個長度「L」產生所有可能的組合,然後使用 chain() 函數將所有生成器連接到一個可迭代中。
以上是如何在 Python 中高效產生數字列表的所有可能子集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!