Linea singola annidata per i loop

| |

Scritto questa funzione in Python che traspone una matrice:

def transpose(m): height = len(m) width = len(m[0]) return [ [ m[i ][j] for i in range(0, height) ] for j in range(0, width) ] 

Durante il processo mi sono reso conto di non comprendere appieno come sia nidificata una singola riga ciclo for viene eseguito. Per favore aiutami a capire rispondendo alle seguenti domande:

  1. Qual è l'ordine in cui viene eseguito questo ciclo for?
  2. Se avessi un ciclo for nidificato triplo , quale ordine verrebbe eseguito?
  3. Quale sarebbe uguale al ciclo for non annidato uguale?

Dato,

[ function( i,j) for i,j in object ] 
  1. Che tipo deve essere l'oggetto per utilizzare questa struttura for loop?
  2. Qual è l'ordine in cui i e j sono assegnati agli elementi nell'oggetto?
  3. Può essere simulato da una struttura di ciclo for diversa?
  4. Questo ciclo for può essere nidificato con una struttura simile o diversa per loop? E come sarebbe?

Addi anche le informazioni personali sono apprezzate.