Как получить индекс самого большого списка внутри списка списков с помощью Python?

Я храню ключевые кадры анимации из Cinema4D(используя удивительный py4D) в списки списков:

props = [lx,ly,lz,sx,sy,sz,rx,ry,rz]

я распечатал ключевые кадры для каждого свойства / трека в произвольной анимации, и они имеют разную длину:

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

Теперь, если я хочу использовать эти ключи в Blender, мне нужно сделать что-то вроде:

  1. перейти к текущему кадру
  2. установить свойства для этого ключевого кадра( может быть местоположение,поворот,масштаб) и вставить кадр

пока мой план таков:

  1. цикл от 0 до максимального количества ключевых кадров для свойства
  2. цикл через каждое свойство
  3. проверьте, есть ли у него значение, сохраненное для текущего ключа, если да, перейдите к кадру в Blender и сохраните значения/вставьте ключевой кадр

Это лучший способ сделать это ?

это контекст для вопроса.

сначала мне нужно найти самый большой список, который хранит реквизит. Я новичок в Python и было интересно, если есть волшебная функция, которая делает это для вас. Аналогично max(), но для длины списка.

в данный момент я думаю о кодировании его следующим образом:

//after props are set
lens = []
for p in props: lens.append(len(p))
maxLen = max(lens)

какой был бы лучший способ получить это ?

спасибо

2 ответов


max(enumerate(props), key = lambda tup: len(tup[1]))

это дает вам кортеж, содержащий (index, list) самого длинного списка в реквизите.


вы можете использовать генератор выражение:

maxLen = max(len(p) for p in props)