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

时间:2010-06-30 13:07:38

标签: python list blender cinema-4d

我将来自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. 设置该关键帧的属性(可以是位置,旋转,缩放)并插入关键帧
  3. 到目前为止,我的计划是:

    1. 从0循环到所有属性的最大关键帧数
    2. 遍历每个属性
    3. 检查是否为当前密钥存储了值,如果是,请转到Blender中的框架并存储值/ insert keyframe
    4. 这是最好的方法吗?

      这是问题的背景。

      首先,我需要找到最大的道具商店列表。我是python的新手,想知道是否有一个神奇的功能可以帮助你。与max()类似,但是对于列表长度。

      目前我正在考虑将其编码为:

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

      最好的方法是什么?

      由于

2 个答案:

答案 0 :(得分:22)

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

这会为你提供一个元组,其中包含道具中最长列表的(index, list)

答案 1 :(得分:8)

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

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