كيف يمكنني الحصول على فهرس أكبر قائمة داخل قائمة القوائم باستخدام Python؟
سؤال
أقوم بتخزين إطارات مفاتيح الرسوم المتحركة من 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
الآن إذا أردت استخدام تلك المفاتيح في الخلاط ، فأنا بحاجة إلى القيام بشيء مثل:
- انتقل إلى الإطار الحالي
- اضبط خصائص هذا الإطار المفتاح (يمكن أن يكون الموقع ، الدوران ، المقياس) وأدخل إطار المفتاح
خطتي حتى الآن هي:
- حلقة من 0 إلى الحد الأقصى لعدد إطارات المفاتيح لجميع الخصائص
- حلقة من خلال كل خاصية
- تحقق مما إذا كانت تحتوي على قيمة مخزنة للمفتاح الحالي ، إذا كان الأمر كذلك ، انتقل إلى الإطار في 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)
لا تنتمي إلى StackOverflow