transpose
Convierte una colección de filas en una colección de columnas.
Lección
transpose es zip generalizado a cualquier
número de iterables: la n-ésima lista de salida contiene el n-ésimo
elemento de cada fila de entrada que aún tenga uno. Mientras que
zip/zip3 toman cada fila como un argumento
aparte (porque Dart no puede expresar genéricos variádicos),
transpose toma todas las filas como un
único iterable de iterables —
transpose([row1, row2, row3]) — así que funciona para
cualquier número de filas decidido en tiempo de ejecución.
A diferencia de zip, que para en cuanto se agota la entrada
más corta, transpose sigue mientras alguna fila
todavía tenga valores: una fila más corta simplemente deja de contribuir a
las listas de salida posteriores, que pueden acabar siendo más cortas que
el número de filas. Solo se detiene del todo cuando se han agotado todas
las filas.
Demo 1 · Fundamentos & filas desiguales
Demo 2 · Asíncrono
Pruébalo tú
Ejercicio: transpón la matriz (las filas pasan a ser columnas).