我正在研究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