如何从右侧python中拆分n个字符的数组?

时间:2018-04-18 23:45:04

标签: python python-3.x

我有一个有m个字符的二进制数组,我想用python将它分成右边的n个字符块。

1 个答案:

答案 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)]