Как я получаю индекс самого большого списка в списке списков с помощью 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

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

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

До сих пор мой план к:

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

Действительно ли это - лучший способ сделать это?

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

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

В данный момент я думаю о кодировании его как это:

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

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

Спасибо

10
задан Hooked 15 March 2012 в 13:55
поделиться

2 ответа

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

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

22
ответ дан 3 December 2019 в 15:05
поделиться

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

maxLen = max(len(p) for p in props)
8
ответ дан 3 December 2019 в 15:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: