Comment puis-je obtenir l'index de la plus grande liste dans une liste de listes en utilisant Python?
Question
je stocke des cadres clés d'animation de Cinema4D (en utilisant le py4D impressionnant) dans une liste de listes:
props = [lx,ly,lz,sx,sy,sz,rx,ry,rz]
I imprimer les images clés pour chaque propriété / piste dans une animation arbitraires et ils sont de longueurs différentes:
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
Maintenant, si je veux utiliser ces clés dans Blender je dois faire quelque chose comme:
- aller à la trame courante
- définir les propriétés de ce laps de clé (peut être situé, rotation, échelle) et insérer une image clé
Jusqu'à présent, mon plan est de:
- Boucle de 0 au nombre maximal d'images clés pour toutes les propriétés
- Boucle dans chaque propriété
- Vérifiez si elle a une valeur mémorisée pour la clé actuelle, le cas échéant, aller au cadre dans Blender et stocker les valeurs / insertion keyframe
Est-ce la meilleure façon de le faire?
Ceci est le contexte de la question.
D'abord, je dois trouver la plus grande liste que les magasins d'accessoires. Je suis nouveau à python et je me demandais s'il y avait une fonction magique qui fait que pour vous. Semblable à max (), mais pour des longueurs liste.
En ce moment je pense à coder comme ceci:
//after props are set
lens = []
for p in props: lens.append(len(p))
maxLen = max(lens)
Quelle serait la meilleure façon d'obtenir cela?
Merci
La solution
max(enumerate(props), key = lambda tup: len(tup[1]))
Cela vous donne un tuple contenant (index, list)
de la plus longue liste d'accessoires.
Autres conseils
Vous pouvez utiliser une expression du générateur:
maxLen = max(len(p) for p in props)