TheBrain نشر 23 يناير 2016 أرسل تقرير نشر 23 يناير 2016 أملك المصفوفة التالية:myList = [1, 2, 3, 100, 5] وإذا قمت بعملية فرز فسأحصل على [1, 2, 3, 5, 100]. أريد الحصول على مواقع العناصر من المصفوفة الأصلية في ترتيب الفرز مثل [0, 1, 2, 4, 3].فهل توجد دالة معينة في بايثون لفعل ذلك؟ اقتباس
0 هشام رزق الله نشر 23 يناير 2016 أرسل تقرير نشر 23 يناير 2016 يوجد عدة طرق في لغة بايثون لفعل ذلك، فيمكنك على سبيل المثال فعل ذلك عن طريق استخدام سطر واحد فقط يحتوي على مجموعة من الدوال للفرز والحساب مثل sorted و range و len بالإضافة إلى lambda كما في المثال التالي:In [15]: myList = [1, 2, 3, 100, 5] In [16]: sorted(range(len(myList)),key=lambda x:myList[x]) Out[16]: [0, 1, 2, 4, 3]أو يمكنك الاستغناء عن lambda واستبدالها بـ __getitem__ لتصبح الشيفرة البرمجية النهائية كالتالي: sorted(range(len(myList)),key=myList.__getitem__) وإذا كنت تستخدم numpy() فيمكنك فعل ذلك ببساطة عن طريق استخدام دالة argsort() فهذه الدالة تُرجع معاملات التي ستفرز المصفوفة أو القائمة. اقتباس
السؤال
TheBrain
أملك المصفوفة التالية:
وإذا قمت بعملية فرز فسأحصل على [1, 2, 3, 5, 100]. أريد الحصول على مواقع العناصر من المصفوفة الأصلية في ترتيب الفرز مثل [0, 1, 2, 4, 3].
فهل توجد دالة معينة في بايثون لفعل ذلك؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.