如何使用Python获取列表列表中最大列表的索引?

Geo*_*nza 10 python list blender cinema-4d

我将Cinema4D中的动画关键帧(使用超棒的py4D)存储到列表列表中:

props = [lx,ly,lz,sx,sy,sz,rx,ry,rz]
Run Code Online (Sandbox Code Playgroud)

我在任意动画中打印出每个属性/轨道的关键帧,它们的长度不同:

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
Run Code Online (Sandbox Code Playgroud)

现在,如果我想在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)
Run Code Online (Sandbox Code Playgroud)

最好的方法是什么?

谢谢

sha*_*tor 22

max(enumerate(props), key = lambda tup: len(tup[1]))
Run Code Online (Sandbox Code Playgroud)

这将为您提供包含(index, list)道具中最长列表的元组.


Dan*_*ach 8

您可以使用生成器表达式:

maxLen = max(len(p) for p in props)
Run Code Online (Sandbox Code Playgroud)