如何将列表或字符串解析为固定长度的块

drb*_*sen 6 python

我真的陷入了一个基本问题.我试图获取一个项目的列表,并将其划分为许多项目的列表,每个项目的字符长度为10.例如,给出一个包含一个项目的列表['111111111122222222223333333333'],输出将产生:

1111111111
2222222222
3333333333
Run Code Online (Sandbox Code Playgroud)

我觉得这很简单,但我很难过.我试图创建一个这样的函数:

def parser(nub):    
    while len(nub) > 10:  
        for subnub in nub:  
            subnub = nub[::10]
            return(subnub)  
    else:  
        print('Done')
Run Code Online (Sandbox Code Playgroud)

显然,这不起作用.有什么建议?使用字符串比列表更容易吗?

mac*_*ing 9

已经提出了一个相关问题: 将列表切成子列表列表

例如,如果您的源列表是:

the_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, ... ]
Run Code Online (Sandbox Code Playgroud)

你可以拆分它像:

split_list = [the_list[i:i+n] for i in range(0, len(the_list), n)]
Run Code Online (Sandbox Code Playgroud)

假设n是您的子列表长度,结果将是:

[[1, 2, 3, ..., n], [n+1, n+2, n+3, ..., 2n], ...]
Run Code Online (Sandbox Code Playgroud)

然后你可以像下面这样迭代它:

for sub_list in split_list:
    # Do something to the sub_list
Run Code Online (Sandbox Code Playgroud)

字符串也是如此.

这是一个实际的例子:

>>> n = 2
>>> listo = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> split_list = [listo[i:i+n] for i in range(0, len(listo), n)]
>>> split_list
[[1, 2], [3, 4], [5, 6], [7, 8], [9]]

>>> listo = '123456789'
>>> split_list = [listo[i:i+n] for i in range(0, len(listo), n)]
>>> split_list
['12', '34', '56', '78', '9']
Run Code Online (Sandbox Code Playgroud)