Come faccio ad avere l'indice della più grande lista all'interno di una lista di liste utilizzando Python?
Domanda
Sto Memorizzazione fotogrammi chiave di animazione da Cinema4D (utilizzando il py4D impressionante) in una lista di liste:
props = [lx,ly,lz,sx,sy,sz,rx,ry,rz]
ho stampato i fotogrammi chiave per ogni proprietà / pista in un'animazione arbitrario e sono di diverse lunghezze:
track Position . X has 24 keys
track Position . Y has 24 keys
track Position . Z has 24 keys
track Scale . X has 1 keys
track Scale . Y has 1 keys
track Scale . Z has 1 keys
track Rotation . H has 23 keys
track Rotation . P has 24 keys
track Rotation . B has 24 keys
Ora, se voglio usare quelle chiavi in ??Blender ho bisogno di fare qualcosa di simile:
- vai al frame corrente
- impostare le proprietà per tale fotogramma chiave (possono essere posizione, rotazione, scala) e inserire un fotogramma chiave
Finora il mio piano è quello di:
- Loop da 0 al numero massimo di fotogrammi chiave per tutte le proprietà
- Loop attraverso ogni proprietà
- Controlla se ha un valore memorizzato per la chiave corrente, in caso affermativo, andare al telaio in Blender e memorizzare i valori / Inserisci fotogramma chiave
E 'questo il modo migliore per fare questo?
Questo è il contesto per la domanda.
Per prima cosa ho bisogno di trovare la più grande lista che puntelli negozi. Sono nuovo di pitone e chiedevo se ci fosse una funzione magica che fa per voi. Simile a max (), ma per la lista lunghezze.
Al momento sto pensando di codifica in questo modo:
//after props are set
lens = []
for p in props: lens.append(len(p))
maxLen = max(lens)
Quale sarebbe il modo migliore per ottenere questo?
Grazie
Soluzione
max(enumerate(props), key = lambda tup: len(tup[1]))
Questo vi dà una tupla contenente (index, list)
della lista più lunga puntelli.
Altri suggerimenti
È possibile utilizzare un generatore di espressione:
maxLen = max(len(p) for p in props)