您好,登錄后才能下訂單哦!
本篇文章為大家展示了使用python怎么輸出一個序列的所有子序列,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
如下所示:
def sub(arr): finish=[] size = len(arr) end = 1 << size #end=2**size for index in range(end): # shift index array = [] for j in range(size): # 00,01,10,11 is symmetrical if (index >> j) % 2: # this result is 1, so do not have to write == array.append(arr[j]) # print(array) finish.append(array) return finish
移位運算符 << 的優先級大于賦值 =
用01二進制串決定數組中的每個數字是否輸出
[]=000;[1]=100;[2]=010;[3]=001;[1,2]=110;[1,2,3]=111…
如何實現?
第一個循環實現的是01串的遍歷,eg.由000到111
第二個循環實現的是數組的遍歷,eg.將000與數組中的每一位數字做判斷
在if語句中,用到了向右移位,由于二進制串是對稱的,所以我們可以將01串從后向前與數組中的每一位數字做判斷。
eg.001與100對稱,110與011對稱…
在001中,最后一位是1,說明數組中3需要輸出
但是在我們遍歷數組的時候,先遇到的是1與arr[0],不過由于對稱性,這種情況其實與在100中,后遇到的是1與arr[2]
上述內容就是使用python怎么輸出一個序列的所有子序列,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。