python實現(xiàn)輸出一個序列的所有子序列示例
如下所示:
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

移位運(yùn)算符 << 的優(yōu)先級大于賦值 =
用01二進(jìn)制串決定數(shù)組中的每個數(shù)字是否輸出
[]=000;[1]=100;[2]=010;[3]=001;[1,2]=110;[1,2,3]=111…
如何實現(xiàn)?
第一個循環(huán)實現(xiàn)的是01串的遍歷,eg.由000到111
第二個循環(huán)實現(xiàn)的是數(shù)組的遍歷,eg.將000與數(shù)組中的每一位數(shù)字做判斷
在if語句中,用到了向右移位,由于二進(jìn)制串是對稱的,所以我們可以將01串從后向前與數(shù)組中的每一位數(shù)字做判斷。
eg.001與100對稱,110與011對稱…
在001中,最后一位是1,說明數(shù)組中3需要輸出
但是在我們遍歷數(shù)組的時候,先遇到的是1與arr[0],不過由于對稱性,這種情況其實與在100中,后遇到的是1與arr[2]
以上這篇python實現(xiàn)輸出一個序列的所有子序列示例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Python和大模型進(jìn)行數(shù)據(jù)分析和文本生成
Python語言以其簡潔和強(qiáng)大的特性,成為了數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)和人工智能開發(fā)的首選語言之一,在這篇文章中,我將介紹如何用Python連接和使用大模型,并通過示例展示如何在實際項目中應(yīng)用這些技術(shù),需要的朋友可以參考下2024-05-05
利用python實現(xiàn)平穩(wěn)時間序列的建模方式
這篇文章主要介紹了利用python實現(xiàn)平穩(wěn)時間序列的建模方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python網(wǎng)絡(luò)編程學(xué)習(xí)筆記(八):XML生成與解析(DOM、ElementTree)
DOM是Document Object Model的簡稱,XML 文檔的高級樹型表示。該模型并非只針對 Python,而是一種普通XML 模型。Python 的 DOM 包是基于 SAX 構(gòu)建的,并且包括在 Python 2.0 的標(biāo)準(zhǔn) XML 支持里2014-06-06
關(guān)于Torch?torchvision?Python版本對應(yīng)關(guān)系說明
這篇文章主要介紹了關(guān)于Torch?torchvision?Python版本對應(yīng)關(guān)系說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
Python進(jìn)程間通訊與進(jìn)程池超詳細(xì)講解
進(jìn)程彼此之間互相隔離,要實現(xiàn)進(jìn)程間通信(IPC),multiprocessing模塊主要通過隊列方式,隊列:隊列類似于一條管道,元素先進(jìn)先出,需要注意的一點是:隊列都是在內(nèi)存中操作,進(jìn)程退出,隊列清空,另外,隊列也是一個阻塞的形態(tài)2022-12-12

