How can I join a list of characters into strings of 8?
本问题已经有最佳答案,请猛点这里访问。
我有一个包含字符的python列表,希望将它们连接起来,创建一个包含8个元素的字符串列表,例如:
1 | x = ['0','0','1','a','4','b','6','2','2','1','4','1','5','7','9','8'] |
结果
1 | ['001a4b62', '21415798'] |
1 2 3 4 5 6 7 | 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的列表分组,并将每个列表转换为一个字符串:
1 2 | >>> [''.join(e) for e in grouper(x, 8)] ['001a4b62', '21415798'] |
1 | x = ['0','0','1','a','4','b','6','2','2','1','4','1','5','7','9','8'] |
简单地说:
1 2 | print(["".join(x[i:i + 8]) for i in range(0, len(x), 8)]) > ['001a4b62', '21415798'] |
首先检查以下如何将python列表分成大小相等的块?
在python 3.x中,有了这个功能,就可以使用上面的变量
1 2 3 | import operator import functools result = map(lambda s: functools.reduce(operator.add, s), zip(*[iter(x)]*8)) |
在python 2.x中,可以删除reduce的
佛瑞克
可以使用join将字符数组转换为字符串。这是你在案件中的做法-
1 2 3 4 5 6 | 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将保存分组后的字符串。