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

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

Вопрос

Я храним анимационные кадры ключей из Cinema4D (используя Awesome 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)

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

Спасибо

Это было полезно?

Решение

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

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

Другие советы

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

maxLen = max(len(p) for p in props)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top