logo

طرح قوائم السلسلة في بيثون

في لغة بايثون، السلسلة هي سلسلة من الأحرف، والقائمة هي مجموعة من العناصر التي يمكن أن تكون من أي نوع بيانات، بما في ذلك السلاسل. الطرح تتضمن قائمة السلاسل إزالة العناصر المشتركة بين اثنين القوائم أو سلاسل .

لطرح قائمة سلسلة واحدة من أخرى، يمكنك استخدام 'تعيين' نوع البيانات في بايثون. نوع البيانات المحدد عبارة عن مجموعة غير مرتبة من العناصر الفريدة. عامل الطرح '-' يمكن استخدامه بين مجموعتين للعثور على عناصر المجموعة الأولى غير الموجودة في المجموعة الثانية.

مثال:

فيما يلي مثال على طرح قائمة سلاسل من أخرى باستخدام نوع البيانات المحدد:

 list1 = ['apple', 'banana', 'cherry', 'orange'] list2 = ['banana', 'orange', 'kiwi'] result = list(set(list1) - set(list2)) print(result) 

انتاج:

 ['apple', 'cherry'] 

في المثال أعلاه، قمنا بتعريف قائمتين، 'الورقة 1' و 'قائمة 2' . بعد ذلك نقوم بتحويل كل قائمة إلى مجموعة باستخدام الأمر 'تعيين' وظيفة في بايثون. بعد ذلك نستخدم '-' عامل لطرح عناصر 'قائمة 2' من 'الورقة 1' . وأخيرًا، نقوم بتحويل المجموعة الناتجة مرة أخرى إلى قائمة باستخدام الأمر 'قائمة' وظيفة في بايثون.

وينتج عن هذا قائمة جديدة 'نتيجة' الذي يحتوي على عناصر 'الورقة 1' التي لا توجد في 'قائمة 2' ، والتي هي في هذه الحالة 'تفاحة' و 'الكرز' .

مثال:

فيما يلي مثال آخر يوضح كيفية طرح قائمة سلاسل من سلسلة واحدة:

 string1 = 'Hello world!' list1 = ['o', 'l', 'd'] result = ''.join([char for char in string1 if char not in list1]) print(result) 

انتاج:

 'He wr!' 

في المثال أعلاه، قمنا بتعريف سلسلة 'سلسلة 1' وقائمة السلاسل 'الورقة 1' . بعد ذلك، نستخدم فهم القائمة للتكرار على كل حرف فيه 'سلسلة 1' ومعرفة ما إذا كان موجودا في 'الورقة 1' . إذا لم تكن الشخصية موجودة 'الورقة 1' ، نضيفه إلى قائمة جديدة باستخدام 'ينضم' طريقة. وأخيرًا، نقوم بتحويل القائمة الناتجة مرة أخرى إلى سلسلة.

وينتج عن هذا سلسلة جديدة 'نتيجة' الذي يحتوي فقط على أحرف 'سلسلة 1' التي لا توجد في 'الورقة 1' ، والتي هي في هذه الحالة 'ح'، 'ه'، '''، 'ث'' ، و 'ص' .

تجدر الإشارة إلى أنه قد لا يتم الحفاظ على ترتيب العناصر في القائمة أو السلسلة الناتجة. إذا كنت بحاجة إلى الحفاظ على الترتيب، يمكنك استخدام فهم القائمة مع 'لو' بيان لتصفية العناصر الموجودة في القائمة الثانية.

إعادة تسمية مجلد لينكس

مثال:

 list1 = ['apple', 'banana', 'cherry', 'orange'] list2 = ['banana', 'orange', 'kiwi'] result = [item for item in list1 if item not in list2] print(result) 

انتاج:

 ['apple', 'cherry'] 

في المثال أعلاه، قمنا بتعريف قائمتين، 'الورقة 1' و 'قائمة 2' . بعد ذلك، نستخدم فهم القائمة للتكرار على كل عنصر فيه 'الورقة 1' ومعرفة ما إذا كان موجودا في 'قائمة 2' . إذا لم يكن العنصر موجودًا 'قائمة 2' ، نضيفه إلى قائمة جديدة. وأخيرا، نقوم بطباعة القائمة الناتجة، والتي تحتوي على عناصر 'الورقة 1' التي لا توجد في 'قائمة 2' .

بعض المعلومات الأخرى:

تعيين أنواع البيانات مقابل القائمة:

كما ذكرنا سابقًا، عند طرح قوائم السلاسل، يوصى بتحويل القوائم إلى مجموعات. وذلك لأن المجموعات مُحسّنة للتحقق من وجود العناصر وإزالة التكرارات. ومع ذلك، إذا كان الحفاظ على ترتيب العناصر أمرًا مهمًا، فقد يكون من الأفضل استخدام فهم القائمة بدلاً من ذلك.

اعتبارات الأداء:

يمكن أن يكون تحويل القوائم إلى مجموعات عملية مكلفة من الناحية الحسابية، خاصة بالنسبة للقوائم الكبيرة. إذا كان الأداء هو مصدر القلق، فقد تحتاج إلى التفكير في استخدام طرق بديلة مثل فهم القائمة أو تعبير المولد.

التحولية:

من المهم ملاحظة أن المجموعات موجودة متقلب ، بينما السلاسل و الصفوف (والتي يمكن استخدامها أيضًا كأنواع بيانات قابلة للتكرار) ليست كذلك. ويعني أنه عند طرح مجموعة من مجموعة أخرى، تكون المجموعة الناتجة متقلب ويمكنك تعديل محتوياته. من ناحية أخرى، عند طرح قائمة أو صف من قائمة أو صف آخر، فإن القائمة أو الصف الناتج غير قابل للتغيير، ولا يمكنك تعديل محتوياته.

القوائم المتداخلة:

إذا كنت تعمل مع قوائم متداخلة، فقد تحتاج إلى استخدام حلقة متداخلة أو التكرار لطرح قائمة من أخرى. هنا مثال:

 list1 = [['apple', 'banana'], ['cherry', 'orange']] list2 = [['banana', 'kiwi'], ['cherry', 'pear']] result = [] for sublist1, sublist2 in zip(list1, list2): subresult = [item for item in sublist1 if item not in sublist2] result.append(subresult) print(result) 

انتاج:

 [['apple'], ['orange']] 

في المثال أعلاه، قمنا بتعريف قائمتين متداخلتين، 'الورقة 1' و 'قائمة 2' . بعد ذلك، نستخدم حلقة for للتكرار على كل زوج من القوائم الفرعية الموجودة 'الورقة 1' و 'قائمة 2' . نحن نستخدم فهم القائمة لطرح عناصر كل قائمة فرعية فيها 'قائمة 2' من القائمة الفرعية المقابلة في ' ورقة 1' . وأخيرًا، نقوم بإلحاق القوائم الفرعية الناتجة بقائمة جديدة 'نتيجة' .