x = [1,2,3,4,5,6,7,8,9]
n = 3
zip(*[iter(x)] * n)
Почему прямо не сказать, без всяких "посмотрите как работает" и пр. Итератор берет коллекцию х и разбивает ее на список кортежей , в данном случае, 3 элемента, Итог [(1,2,3),(4,5,6),(7,8,9)]
если размер списка len(x)%3!=0 тогда , пример
x = [1,2,3,4,5,6,7,8]
zip(*[iter(x)] * 3) -> [(1,2,3),(4,5,6)]
если n больше чем длина списка
n = 10
x = [1,2,3,4,5,6,7,8,9]
zip(*[iter(x)] * 3) -> []