Come faccio ad avere l'indice della più grande lista all'interno di una lista di liste utilizzando Python?

StackOverflow https://stackoverflow.com/questions/3149502

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:

  1. vai al frame corrente
  2. impostare le proprietà per tale fotogramma chiave (possono essere posizione, rotazione, scala) e inserire un fotogramma chiave

Finora il mio piano è quello di:

  1. Loop da 0 al numero massimo di fotogrammi chiave per tutte le proprietà
  2. Loop attraverso ogni proprietà
  3. 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

È stato utile?

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top