2016-09-25 27 views

答えて

4

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'] 
1

joinを使用すると、文字の配列を文字列に変換できます。 は、ここでは、あなたのケースでそれを行うだろう方法です -

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は、あなたのグループ化された文字列を保持します。

2
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'] 
1

まず、あなたはPythonの3.xの中で行うことができる場所にこれでHow to split python list into chunks of equal size?

次のチェックアウト上記の変数にx

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

python 2.xでは、functoolsという接頭辞を減らす。

fricke

関連する問題