Slice a binary number into groups of five digits

后端 未结 7 1264
野性不改
野性不改 2021-01-21 07:34

Is there any neat trick to slice a binary number into groups of five digits in python?

\'00010100011011101101110100010111\' => [\'00010\', \'00110\', \'10111\', ... ]

7条回答
  •  有刺的猬
    2021-01-21 08:15

    >>> [''.join(each) for each in zip(*[iter(s)]*5)]
    ['00010', '10001', '10111', '01101', '11010', '00101']
    

    or:

    >>> map(''.join, zip(*[iter(s)]*5))
    ['00010', '10001', '10111', '01101', '11010', '00101']
    

    [EDIT]

    The question was raised by Greg Hewgill, what to do with the two trailing bits? Here are some possibilities:

    >>> from itertools import izip_longest
    >>>
    >>> map(''.join, izip_longest(*[iter(s)]*5, fillvalue=''))
    ['00010', '10001', '10111', '01101', '11010', '00101', '11']
    >>>
    >>> map(''.join, izip_longest(*[iter(s)]*5, fillvalue=' '))
    ['00010', '10001', '10111', '01101', '11010', '00101', '11   ']
    >>>
    >>> map(''.join, izip_longest(*[iter(s)]*5, fillvalue='0'))
    ['00010', '10001', '10111', '01101', '11010', '00101', '11000']
    

提交回复
热议问题