كيف يمكنني الحصول على فهرس أكبر قائمة داخل قائمة القوائم باستخدام Python؟

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

سؤال

أقوم بتخزين إطارات مفاتيح الرسوم المتحركة من 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. تحقق مما إذا كانت تحتوي على قيمة مخزنة للمفتاح الحالي ، إذا كان الأمر كذلك ، انتقل إلى الإطار في 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