2013-10-18 27 views
0

我現在有一段很長的二進制代碼我該如何計算給定段中1的位置,例如我有兩個延伸段:如何從0和1代碼的長段中計算1的位置

seq1 = 10000000000000000000010000000000000000000010000000000000000000010000000000000000 
     |     |     |     | 
     1     22     42     58 

seq2 = 10000000000000000000001000000000000000000001000000000000000000001000000000000000 
     |      |     |     | 
     1     23     43     59 

放出來應該是這樣子的第一個序列:

seq1 1:1 1:22 1:42 1:58 

爲第二順序:

seq2 2:1 2:23 2:43 2:59 
+0

,我認爲你的一些標記的是出位。 –

回答

3

這應該讓你開始。

>>> s='10000000000000000000010000000000000000000010000000000000000000010000000000000000' 
>>> [i+1 for i,ch in enumerate(s) if ch=='1'] 
[1, 22, 43, 64] 
>>>  

如果你需要休息,這就是:

def convertSeq(s, index): 
    result = [i+1 for i,ch in enumerate(s) if ch=='1'] 
    result = ' '.join([str(index)+':'+str(i) for i in result]) 
    result = 'seq'+str(index)+' '+result 
    return result 

seq1 = '10000000000000000000010000000000000000000010000000000000000000010000000000000000' 
seq2 = '10000000000000000000001000000000000000000001000000000000000000001000000000000000' 

print convertSeq(seq1, 1) 
print convertSeq(seq2, 2) 

或者,如果你喜歡的俏皮話:

def convertSeq(s, index): 
    return 'seq{} {}'.format(
       index, 
       ' '.join('{}:{}'.format(index, i+1) 
         for i,ch in enumerate(s) 
         if ch == '1')) 
相關問題