如何从0和1的长距离计算1的位置

2024-04-23 12:01:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段很长的二进制代码,现在我如何计算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

Tags: 代码二进制序列seq2seq1
1条回答
网友
1楼 · 发布于 2024-04-23 12:01:58

这应该让你开始。你知道吗

>>> 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'))

相关问题 更多 >