Pythonを使用してリストのリスト内で最大のリストのインデックスを取得するにはどうすればよいですか?
質問
Animationキーフレームを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
ブレンダーでそれらのキーを使用したい場合は、次のようなことをする必要があります。
- 現在のフレームに移動します
- そのキーフレームのプロパティを設定し(場所、回転、スケール)、キーフレームを挿入します
これまでのところ、私の計画は次のとおりです。
- すべてのプロパティの0からキーフレームの最大数へのループ
- 各プロパティをループします
- 現在のキーに保存されている値があるかどうかを確認します。もしそうなら、ブレンダーのフレームに移動し、値を保存/挿入キーフレーム
これはこれを行うための最良の方法ですか?
これが質問のコンテキストです。
最初に、店舗を支える最大のリストを見つける必要があります。私は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)
所属していません StackOverflow