Imprimir lista de N productos

Hola, estoy teniendo problemas con la forma de imprimir el siguiente ejercicio:

Continuando con el proceso de sistematización del proceso de venta de productos de la super tienda por departamentos “Tu Vecino”, además de la información ya suministrada en el Reto No. 2, conservando la misma entrada de forma:

N, como la cantidad de productos a procesar.
Para cada producto, ingresar:
Código del producto.
Nombre al producto.
Cantidad comprada.
Valor unitario (sin IVA).
Tipo de IVA, que puede ser:
1: Exento de IVA
2: Bienes, donde se aplica como IVA el 5%
3: General, donde se aplica como IVA el 19%
Como aspecto adicional en este Reto 3, la información que se ingresa de los productos debe almacenar en listas, una lista por cada elemento de entrada del producto (código, nombre, cantidad comprada, valor unitario y tipo de IVA). Una vez se ingrese la información de los N artículos, se debe imprimir, como mecanismo de control en este orden, la longitud de la lista de códigos, longitud de la lista de nombres, longitud de la lista de cantidad comprada, longitud de la lista de valor unitario y la longitud de la lista de tipo de IVA, para luego continuar con los requerimientos solicitados.

El gerente de la tienda desea que a través de un programa se calcule, para cada producto, valor del producto, que corresponde a la cantidad comprada por el valor unitario, el valor del IVA y el valor final del producto, que corresponde a la suma del valor del producto más el valor de IVA. Además, se desea conocer el valor total de la compra, es decir, la suma de los N productos (tomando el valor final del producto, es decir con IVA aplicado) y el valor total de IVA de la compra (La suma del valor de IVA de los N productos). La información calculada para cada producto, en este caso, valor producto, valor IVA y valor final se debe almacenar en listas (para valor producto, valor IVA y valor final)

Para este Reto, con la información suministrada se solicita resolver la situación problema, generando como salida, para cada uno de los N productos, el código del producto, nombre del producto, valor del producto sin aplicar IVA y el valor final del producto, una vez aplicada el IVA, el valor total de la compra, sumando el valor final de los N productos y el valor total de IVA, sumando el valor de IVA de los N productos

Recomendaciones importantes:

El orden en la entrada de la información al programa es tal y como se suministra, es decir, primero la cantidad de productos (N, como dato entero)), luego para cada producto se ingresa el código del artículo como dato entero, nombre del producto, la cantidad comprada como dato flotante, el valor unitario como dato flotante y finalmente el tipo de IVA aplicar al producto (1,2 o 3)
En las instrucciones de lectura y escritura (input y print) no utilizar mensajes, debido a que el programa se comprobará a través de datos de prueba.
Ejemplos: codigo=int(input())

                         print(codigo)   

El método de comprobación es a través de casos de prueba, ya definidos en plataforma, que validarán la eficacia del programa.

en este caso mis entradas son:
entradas: N, cod del producto, nombre del producto, unidades compradas, precio por unidad, y tipo de iva.
la salida que necesito: longitud de la lista de codigos, longitud de la lista nombre, long cantidad comprada, lon valor unitario, lon tipo de iva, cod pro1, namepro1, valor tot pro1 sin iva, valor to pro con iva… y luego los mismos valores para el producto 2 y al final el valor total de iva… asi mi codigo es el siguiente:

N=int(input())

codList=[]
nameList=[]
cantidadList=[]
unitarioList=[]
ivaList=[]

iva=0
totalIva=0
totalCompra=0

for i in range(N):

  codigoProducto=int(input())
  nombreProducto=input()
  cantidadComprada=int(input())
  valorUnitario=float(input())
  tipoDeIva=int(input())
  
  codList.append(codigoProducto)
  nameList.append(nombreProducto)
  cantidadList.append(cantidadComprada)
  unitarioList.append(valorUnitario)
  ivaList.append(tipoDeIva)

  

  if i+1 == N:
    print(len(codList))
    print(len(nameList))
    print(len(cantidadList))
    print(len(unitarioList))
    print(len(ivaList))

  if tipoDeIva==1:
        iva=0
  elif tipoDeIva==2:
        iva=0.05
  elif tipoDeIva==3:
        iva=0.19
  
  valorSinIva=((cantidadComprada)*valorUnitario)
  valorIva=((cantidadComprada)*(valorUnitario)*iva)
  totalIva+=valorIva
  subTotal=(valorSinIva)+(valorIva)
  totalCompra+=subTotal
  print(len(codList))
  print(len(nameList))
  print(len(cantidadList))
  print(len(unitarioList))
  print(len(ivaList))
  print(codigoProducto)
  print(nombreProducto)
  print(valorSinIva)
  print(subTotal)

print(totalCompra)

if int(totalIva) == 0:
  print(int(totalIva))
else:
  print(totalIva)

Mi problema es que no imprime en el orden que lo necesito… sugerencias?