Realización de una función de cambio en 2048

Digamos que tengo una lista:

board = [2, 4, 0, 2, 8, 4, 4, 8, 0, 2, 0, 0, 4, 0, 2, 2]

y ya tengo un código que hará que la lista se muestre así:

2 4 0 2
8 4 4 8
0 2 0 0
4 0 2 2

Entonces, ¿hay alguna forma de eliminar cada 0 de cada fila y agregarlo al final (incluso si hay diferentes valores en la lista) para que el tablero ahora se vea así:

2 4 2 0
8 4 4 8
2 0 0 0
4 2 2 0

Quiero hacer esto usando un bucle y no individualmente tener que escribir código separado para cada fila.

También puedes hacer esto sin hacer la lista inicial a

board = [[2, 4, 0, 2], [8, 4, 4, 8], [0, 2, 0, 0], [4, 0, 2, 2]]

El código para 1 fila sería:

board = [2, 0, 0, 2]
k = len(board)
board[:] = (value for value in board if value != 0)
while len(board) < k:
    board.append(0)
print(board)

Output = [2, 2, 0, 0]

Respuestas a la pregunta(3)

Su respuesta a la pregunta