我有一个有m个字符的二进制数组,我想用python将它分成右边的n个字符块。
答案 0 :(得分:2)
假设您有一个数组arr = [1,2,3,4,5,6]
和m=3
。
如果你可以把它分解为可分块,那么:
back_m_iter = zip(*([iter(reversed(arr))]*m))
为您提供一个按后面的m
元素分组的数组。
如果您想要列表,只需:
back_m_list = list(back_m_iter)
output: [(6,5,4),(3,2,1)]
如果你想用None
填充不可分割数组的空白点(比如说arr
扩展为1):
from itertools import zip_longest
back_m_iter = zip_longest(*([iter(reversed(arr))]*m), fillvalue=None)
output: [(7,6,5),(4,3,2),(1,None,None)]
如果您希望其余的为0,则可以将None
替换为0' s。
编辑:刚刚看到您的评论,这是一个修订版(误解了您的问题):
back_m_list = [x[::-1] for x in back_m_iter]
output: [(4,5,6),(1,2,3)]
你也可以这样做:
back_m_iter = reversed(list(zip(*([iter(arr)]*m))))
output: [(4,5,6),(1,2,3)]