python 實現窮舉組合

2021-10-06 14:56:11 字數 1352 閱讀 6807

最近進行一項統計需要窮舉乙個列表元素的所有組合,通過查詢以及自己摸索,總結出了一下三種方法:

方法1:

通過迴圈迭代的方式返回結果

def

powersetsrecursive

(items)

: subsets =

first_elt = items[0]

#first element

rest_list = items[1:

]for partial_sebset in powersetsrecursive(rest_list)

: next_subset = partial_sebset[:]

+[first_elt]

return subsets

方法2:

也是通過迴圈迭代的方式進行列舉,不過**更精煉

def

powersetsrecursive2

(items)

: result =[[

]]for x in items:

result.extend(

[subset +

[x]for subset in result]

)return result

方法3:

通過位運算子的方式,值得好好研究一下

def

powersetsbinary

(items)

: n =

len(items)

for i in

range(2

**n)

: combo =

for j in

range

(n):

if(i >> j )%2

==1: )

print

(combo)

方法4:

我對方法3研究的過程中受到啟發,其實窮舉組合其實就是二進位制每一位0/1組合的過程,所以我自己寫了乙個更容易理解的

n=

len(items)

for i in

range(2

**n)

: aa=

str(

bin(i))[

2:].rjust(4,

'0')

# 轉化為2進製,並補全左側位數

combo=

for j in

range

(len

(aa)):

if aa[j]

=='1':)

print

(combo)

列舉進行位運算 列舉組合z

public enum myenum 用位移運算方便的獲取多個列舉的組合變數 myenum myenum myenum.myenum1 myenum.myenum2 myenum myenum myenum.myenum3 或在組合中刪除其中一項列舉 myenum myenum.myenum1 my...

poj1753解題報告(列舉 組合數)

poj 1753,題目鏈結 有4 4 的正方形,每個格仔要麼是黑色,要麼是白色,當把乙個格仔的顏色改變 黑 白或者白 黑 時,其周圍上下左右 如果存在的話 的格仔的顏色也被反轉,問至少反轉幾個格仔可以使 4 4的正方形變為純白或者純黑?1.每乙個位置只有兩種顏色,翻偶數次等於沒有翻,所以只有翻基數次...

窮舉法解決組合問題

在下面的加法算式中,不同的符號代表不同的數字,相同的符號代表相同的數字。請設計程式求出 都 要 學 c 4個符號分別代表的數字。cpp view plain copy print?h k h j k h i j k h 2 0 0 8 都 要 學 c 4個符號分別代表的數字 從0到 9 然後進行組合...