如何在Python中多倍复制位列表并实现相反的操作

2024-03-29 01:18:02 发布

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

我有一份清单:

a = 00111001

对列表进行乘法运算:

multi = a * 3

结果如下:

a = 001110010011100100111001

但是,我需要的结果显示如下,即每个位连续出现三次:

a = 0000001111111111000000111

另外,如何将a = 0000001111111111000000111转换回a = 00111001?你知道吗

我希望有人能帮助我。非常感谢。你知道吗


Tags: 列表multi乘法结果显示
2条回答
>>> a = '00111001'
>>> n=3
>>> ''.join(map(lambda x:x*3, a))
'000000111111111000000111'
s = '00111001'
n = 3
''.join([s[i]*n for i in range(len(s))])

或者更简洁地说

''.join(c*n for c in s)

但这假设您的“位列表”是一个可以迭代的字符串。如果你有一个实际的数字,那么你可以先把它转换成一个字符串,但是你需要知道在前导零的情况下你总共需要多少个二进制数字:

b = 57
bin(b)

'0b111001'

m = 8
s = '{b:>0{m}s}'.format(b=bin(b)[2:], m=m)
s

'00111001'

''.join([s[i]*n for i in range(len(s))])

'000000111111111000000111'

相关问题 更多 >