如何在 Python 中多次复制位列表,反之亦然
How to duplicate the list of bit multiple times and its vice versa in Python
我有一个位列表:
a = 00111001
并对列表进行乘法运算:
multi = a * 3
显示结果如下:
a = 001110010011100100111001
但是,我需要这样的结果,即每个位连续出现三次:
a = 0000001111111111000000111
另外,如何把a = 0000001111111111000000111
转成a = 00111001
回来?
我希望任何人都可以帮助我。谢谢。
>>> 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)
但这假定您的 'list of bit' 是一个可以迭代的字符串。如果你有一个实际的数字,那么你可以先将它转换成一个字符串,但是你需要知道在前导零的情况下你总共想要多少个二进制数字:
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'
我有一个位列表:
a = 00111001
并对列表进行乘法运算:
multi = a * 3
显示结果如下:
a = 001110010011100100111001
但是,我需要这样的结果,即每个位连续出现三次:
a = 0000001111111111000000111
另外,如何把a = 0000001111111111000000111
转成a = 00111001
回来?
我希望任何人都可以帮助我。谢谢。
>>> 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)
但这假定您的 'list of bit' 是一个可以迭代的字符串。如果你有一个实际的数字,那么你可以先将它转换成一个字符串,但是你需要知道在前导零的情况下你总共想要多少个二进制数字:
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'