如何将字符列表连接成8个字符串?

问题描述:

我有字符的Python列表,并希望加入他们创造每8种元素的字符串,如清单:如何将字符列表连接成8个字符串?

x = ['0','0','1','a','4','b','6','2','2','1','4','1','5','7','9','8'] 

结果

['001a4b62', '21415798'] 

itertools documentation包含grouper食谱组连续项目到固定大小的群组:

from itertools import * 

def grouper(iterable, n, fillvalue=None): 
    "Collect data into fixed-length chunks or blocks" 
    # grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx 
    args = [iter(iterable)] * n 
    return izip_longest(fillvalue=fillvalue, *args) 

现在,您可以将其分组成8个大小的列表,并将每个列表转换为tring:

>>> [''.join(e) for e in grouper(x, 8)] 
['001a4b62', '21415798'] 

您可以使用连接将字符数组转换为字符串。 这里是你怎么做你的情况 -

x = ['0','0','1','a','4','b','6','2','2','1','4','1','5','7','9','8'] 
i = 0 
strlist = [] 
while i<len(x): 
    strlist.append(''.join(x[i:i+8])) 
    i+=8 

strlist将举行分组的字符串。

x = ['0','0','1','a','4','b','6','2','2','1','4','1','5','7','9','8'] 

简单:

print(["".join(x[i:i + 8]) for i in range(0, len(x), 8)]) 
> ['001a4b62', '21415798'] 

首先检查了以下How to split python list into chunks of equal size?

有了这个地方,你可以在Python 3.x的做,给上述变量x

import operator 
import functools 
result = map(lambda s: functools.reduce(operator.add, s), zip(*[iter(x)]*8)) 

在python 2.x中,您可以删除前缀functools 减少。

fricke