فرز الأرقام في بايثون: التحول الصحيح للسلاسل النصية
في لغة البرمجة بايثون، يمكنك فرز قائمة تحتوي على أرقام مكتوبة على شكل سلاسل نصية باستخدام دالة الفرز sorted()
، ولكن يبدو أنك واجهت مشكلة عند استخدام هذه الدالة. دعني أشرح لك السبب وأقدم لك حلاً.
عند استخدام sorted()
أو list.sort()
مع قائمة تحتوي على سلاسل نصية تمثل أرقامًا، يتم فرز السلاسل حسب القيم الرقمية للأحرف الفردية في السلسلة، وليس حسب القيم الرقمية الكاملة. وبما أن الأرقام في قائمتك هي سلاسل نصية، يتم فرزها بناءً على الأحرف الفردية، مما يؤدي إلى نتائج غير صحيحة.
-
تقنيات بحث الفيديو المتقدمة05/03/2024
-
حفظ حالة الوظيفة عند تغيير شاشة Android04/03/2024
لحل هذه المشكلة، يمكنك استخدام دالة key
المدمجة في دالة sorted()
لتحديد الوظيفة التي ستُستخدم لاسترداد القيم الرقمية من كل سلسلة نصية. في حالتنا، يمكننا استخدام int
لتحويل السلاسل إلى أرقام صحيحة.
إليك كيف يمكنك تنفيذ ذلك:
pythonkey_s = ['115', '114', '117', '116', '111', '110', '113', '112', '68', '119', '118', '44', '45', '42', '43', '41', '76', '108', '109', '71', '107', '79', '13', '15', '14', '17', '16', '37']
# استخدام دالة sorted() مع معلم الوظيفة key=int
sorted_key_s = sorted(key_s, key=int)
# القائمة المفرزة
print(sorted_key_s)
باستخدام key=int
، ستقوم sorted()
بتحويل كل سلسلة نصية إلى رقم صحيح قبل أدائها لعملية الفرز. وبهذا يمكنك الحصول على النتائج الصحيحة للقائمة المفرزة.
المزيد من المعلومات
بالطبع، دعونا نقوم بتوسيع نطاق المعلومات حول هذا الموضوع.
عندما تكون لديك قائمة من الأرقام في شكل سلاسل نصية في لغة البرمجة بايثون، يصبح من المهم فهم كيف يتم التعامل مع الفرز بشكل صحيح. في المثال السابق، قد قمت باستخدام sorted()
مع وظيفة key=int
لتحويل السلاسل النصية إلى أرقام صحيحة قبل عملية الفرز.
يمكن أن تكون هناك حالات أخرى تتعلق بالتحكم في اتجاه الفرز (تصاعديًا أو تنازليًا) أو تخصيص الفرز باستخدام وظائف مخصصة. على سبيل المثال:
-
ترتيب تنازلي:
يمكنك استخدام البارامترreverse=True
معsorted()
للحصول على ترتيب تنازلي للقائمة المفرزة.pythonsorted_key_s_desc = sorted(key_s, key=int, reverse=True) print(sorted_key_s_desc)
-
استخدام دالة مخصصة للفرز:
يمكنك تحديد دالة مخصصة لاستخدامها كوظيفة للفرز. على سبيل المثال، إذا كنت تريد فرز الأرقام وفقًا لعدد الأحرف في كل سلسلة:pythonsorted_key_s_custom = sorted(key_s, key=lambda x: len(x)) print(sorted_key_s_custom)
في هذا المثال، تم استخدام وظيفة lambda لتحديد عدد الأحرف كمعيار للفرز.
تحقيق فهم عميق لكيفية استخدام هذه الأدوات يساعد في تسهيل معالجة البيانات وضبطها وفقًا لاحتياجات مشروعك الخاص. إذا كنت بحاجة إلى مزيد من المعلومات أو لديك استفسارات إضافية، فلا تتردد في طرحها.