Вывести содержимое списка по спирали (Python)

Тема: 
Списки, кортежи

Вывести содержимое списка по 10 элементов в строке так, чтобы вывод происходил как-бы по спирали: каждая вторая строка должна выводиться задом наперед.

Решение задачи:
Зная номер строки и то, что элементов в строке 10, можно вычислить индексы первого и последнего элементов в строке. А далее в цикле вывести элементы либо от первого к последнему, либо от последнего к первому в зависимости от четности строки.

Номер первого элемента в строке можно определить по формуле i * 10, где i - это номер строки. Действительно, если строка нулевая, то индекс первого элемента будет 0, а если строка первая, то индекс будет 10. Индекс же последнего элемента в строке отличается от первого на 9 единиц, хотя всего элементов в строке 10.

"Счетчиком" в цикле, выводящем строку элементов задом наперед, является индекс последнего элемента; он же используется при выводе элемента.

import random
a = []
for i in range(100):
	a.append(round(random.random() * 50))
 
i = 1 # обычный вывод для сравнения
while i <= 100:
	print('%4d' % a[i-1], end='')
	if i%10 == 0: print()
	i += 1
 
print()
i = 0 # вывод по спирали
while i < 10:
	if i%2 == 0:
		j = i * 10
		k = j + 9
		while j <= k:
			print('%4d' % a[j], end='')
			j += 1
		print()
	else:
		j = i * 10
		k = j + 9
		while j <= k:
			print('%4d' % a[k], end='')
			k -= 1
		print()
	i += 1

Пример выполнения скрипта:

  29   9  50  36  25   1   2  43  13  41
   0  23  43  45  26  40   1  41   1  44
  47  45   1  38  32   5  40  30  41  25
  25  43  37   9  45  33   6  38  13  47
  33   4  15  18  18  32  29  48  20  18
  49  11  50   8  37  23  25   3  18   5
  50  19  24  44   5  11  25  30  39  35
  17  31  33  18   7  21  41  41   6  48
  19   4  31   9  23  49  39   6  25  21
  27  12  27  25  26  47  18  15   3  33

  29   9  50  36  25   1   2  43  13  41
  44   1  41   1  40  26  45  43  23   0
  47  45   1  38  32   5  40  30  41  25
  47  13  38   6  33  45   9  37  43  25
  33   4  15  18  18  32  29  48  20  18
   5  18   3  25  23  37   8  50  11  49
  50  19  24  44   5  11  25  30  39  35
  48   6  41  41  21   7  18  33  31  17
  19   4  31   9  23  49  39   6  25  21
  33   3  15  18  47  26  25  27  12  27

import random   a =

import random
 
a = [random.randint(1,50) for x in range(100)]
 
for n in range(0,99,10):
    print ('%4d' * 10 % tuple(a[n:n+10]))
 
print ('')
 
for n in range(0,99,10):
    if n//10 % 2: t = tuple(a[n+9:n-1:-1])
    else: t = tuple(a[n:n+10])
    print ('%4d' * 10 % t)