Я знаю, что на этот вопрос ответили несколько экспертов по языку, но у меня другой подход, использующий функцию генератора, которую легче читать, а также анализировать и изменять в соответствии с вашими потребностями:
def each_slice(list: List[str], size: int):
batch = 0
while batch * size < len(list):
yield list[batch * size:(batch + 1) * size]
batch += 1
slices = each_slice(["a", "b", "c", "d", "e", "f", "g"], 2)
print([s for s in slices])
$ [['a', 'b'], ['c', 'd'], ['e', 'f'], ['g']]
Если вам нужно, чтобы каждый срез имел размер пакета, например, Pad None или какой-либо символ по умолчанию, вы можете просто добавить код дополнения к yield.Если вы хотите вместо каждых_коннекторов, вы можете сделать это, изменив код так, чтобы он перемещался один за другим вместо пакета за пакетом.