Che cosa fa esattamente questa istruzione Python?

2

Sto cercando di eseguire un algoritmo di dual contouring di base scritto in Python ( qui ) in C ++. Non sono un programmatore Python, quindi una parte della sintassi del linguaggio è un po 'strana per me.

In particolare, questo blocco di codice mi dà problemi:

# Estimate hermite data
h_data = [estimate_hermite(f, df, o+cube_verts[e[0]], o+cube_verts[e[1]]) 
          for e in cube_edges if cube_signs[e[0]] != cube_signs[e[1]]]

La parte che non ha senso è che e è definita nella terza riga per il ciclo for , ma viene quindi utilizzata nella seconda riga. In questo caso, la dichiarazione del ciclo definita dopo il contenuto del ciclo? Ho provato a trovare altri casi di questo in Python, ma finora non sono riuscito.

    
posta Joshua 18.10.2014 - 20:23
fonte

1 risposta

8

Questa è una comprensione degli elenchi . Distribuito un po ', sarebbe simile a qualcosa:

h_data = []
for e in cube_edges:
    if cube_signs[e[0]] != cube_signs[e[1]]:
        h_data.append(estimate_hermite(f, df, o+cube_verts[e[0]], o+cube_verts[e[1]]))
    
risposta data 18.10.2014 - 20:50
fonte

Leggi altre domande sui tag