الانضمام في Python إلى قائمة يعني دمج قائمة من السلاسل بفاصل محدد لتشكيل سلسلة. في بعض الأحيان يكون من المفيد عندما تحتاج إلى تحويل قائمة إلى سلسلة. على سبيل المثال، قم بتحويل قائمة من الأبجدية إلى سلسلة مفصولة بفاصلة لحفظها في ملف.
انضمام القائمة في Python
يمكننا استخدام وظيفة join() في سلسلة Python لدمج قائمة من السلاسل. تأخذ هذه الوظيفة iterable
كوسيط والقائمة هي تكرار، لذا يمكننا استخدامها مع القائمة. أيضًا، يجب أن تحتوي القائمة على سلاسل، إذا كنت ستحاول دمج قائمة من الأرقام الصحيحة فستحصل على رسالة خطأ كما يلي: TypeError: sequence item 0: expected str instance, int found
. دعونا نلقي نظرة على مثال قصير لدمج القائمة في Python لإنشاء سلسلة.
vowels = ["a", "e", "i", "o", "u"]
vowelsCSV = ",".join(vowels)
print("Vowels are = ", vowelsCSV)
عند تشغيل البرنامج أعلاه، سينتج الإخراج التالي.
Vowels are = a,e,i,o,u
Python انضمام سلسلتين
يمكننا استخدام وظيفة join() أيضًا لدمج سلسلتين.
message = "Hello ".join("World")
print(message) #prints 'Hello World'
لماذا تكون وظيفة الانضمام () في سلسلة وليس في قائمة؟
تثير سؤال واحد عند العديد من مطوري Python وهو لماذا تكون وظيفة join () جزءًا من السلسلة وليس من القائمة. هل لا يكون البناء التالي أكثر سهولة في الذاكرة والاستخدام؟
vowelsCSV = vowels.join(",")
هناك سؤال شائع على StackOverflow حول هذا الموضوع، وهنا أقوم بسرد أهم النقاط من المناقشات التي تبدو منطقية تمامًا بالنسبة لي.
السبب الرئيسي هو أن وظيفة join() يمكن استخدامها مع أي متكرر والنتيجة دائمًا سلسلة، لذلك من المنطقي أن يكون لهذه الوظيفة مكان في واجهة برمجة التطبيقات النصية بدلاً من أن يكون في جميع فئات المتكررات.
الانضمام إلى قائمة من أنواع البيانات المتعددة
دعونا نلقي نظرة على برنامج حيث سنحاول الانضمام إلى عناصر القائمة التي تحتوي على أنواع بيانات متعددة.
names = ['Java', 'Python', 1]
delimiter = ','
single_str = delimiter.join(names)
print('String: {0}'.format(single_str))
لنرى الناتج لهذا البرنامج: كانت هذه مجرد عرض لا يمكن دمج قائمة تحتوي على عدة أنواع من البيانات في سلسلة واحدة باستخدام دالة `join()` متعددة الأنواع. يجب أن تحتوي القائمة فقط على قيم السلسلة.
تقسيم السلسلة باستخدام دالة الانضمام
يمكننا استخدام دالة `join()` لتقسيم سلسلة بفاصل محدد أيضًا.
names = 'Python'
delimiter = ','
single_str = delimiter.join(names)
print('String: {0}'.format(single_str))
يظهر هذا أنه عند تمرير سلسلة كمعامل لدالة الانضمام ()، يقسمها حرفًا وبالفاصل المحدد.
استخدام دالة التقسيم()
بالإضافة إلى التقسيم باستخدام دالة `join()`، يمكن استخدام دالة `split()` لتقسيم سلسلة أيضًا والتي تعمل بنفس الطريقة تقريبًا كدالة `join()` لنلقي نظرة على مقتطفات الكود:
names = ['Java', 'Python', 'Go']
delimiter = ','
single_str = delimiter.join(names)
print('String: {0}'.format(single_str))
split = single_str.split(delimiter)
print('List: {0}'.format(split))
لنرى الناتج لهذا البرنامج: استخدمنا نفس الفاصل لتقسيم السلسلة مرة أخرى للعودة إلى القائمة الأصلية.
التقسيم فقط n مرات
الدالة split()
التي قمنا بتوضيحها في المثال السابق تأخذ أيضًا معاملًا اختياريًا ثانيًا يشير إلى عدد المرات التي يجب فيها تنفيذ عملية الفصل. فيما يلي برنامج عيني لتوضيح استخدامه:
names = ['Java', 'Python', 'Go']
delimiter = ','
single_str = delimiter.join(names)
print('String: {0}'.format(single_str))
split = single_str.split(delimiter, 1)
print('List: {0}'.format(split))
لنرى الناتج لهذا البرنامج: تم تنفيذ عملية الفصل هذه المرة مرة واحدة فقط كما قدمنا في معامل الدالة
split()
. هذا كل شيء بالنسبة للانضمام إلى قائمة لإنشاء سلسلة في بايثون واستخدام دالة split() للحصول على القائمة الأصلية مرة أخرى.
Source:
https://www.digitalocean.com/community/tutorials/python-join-list