我正在研究Cryptopals Challenge #6
如果字符串是“1111122223333344444”,并且我想要5个组,那么如何对这些对进行分组和比较。
例如,我想对“11111”和“22222”、“33333”和“44444”进行分组和比较。怎么会这样?
我用了这段代码,在4点后一直有多余的行。。。

>>> for i in range(0, int(len(string)/size)):
...     print(string[previous : previous + size])
...     print(string[previous + size : previous + size * 2])
...     previous += size * 2

11111
22222
33333
44444

还有什么其他方法可以做到这一点?

最佳答案

您可以使用zip习惯用法here将元素分组为已知大小的组。

s='11111222223333344444'
for i in zip(*[iter(s)]*5):
    print(i)

输出:
('1', '1', '1', '1', '1')
('2', '2', '2', '2', '2')
('3', '3', '3', '3', '3')
('4', '4', '4', '4', '4')

如果您希望将它们作为单个字符串,则可以使用''.join
for i in zip(*[iter(s)]*5):
    print(''.join(i))

输出:
11111
22222
33333
44444

10-06 00:49