اذهب إلى المحتوى
  • 0

كيف أحصل على عناصر المتكررة في قائمتين في بايثون؟

ahmed1990

السؤال

أريد الحصول على قائمة بها العناصر المتكررة بين قائمتين في البايثون (أي العناصر الموجودة في القائمتين معا)، قمت بكتابة هذه الشيفرة لفعل ذلك:

b1 = [1,2,3,4,5,9,11,15]
b2 = [4,5,6,7,8]
b3 = [val for val in b1 if val in b2]

لكنها لم تعمل على القوائم المتداخلة كما في المثال التالي:

c1 = [1, 6, 7, 10, 13, 28, 32, 41, 58, 63]
c2 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]]
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

هنالك عدة طرق لحل هذه المشكلة، فيمكنك مثلا ببساطة القيام بتسطيح (flatten) القائمة المتداخلة أو يمكنك القيام بترشيح (فلترة) عناصر الموجودة في القائمتين كما في المثال التالي:

c3 = [filter(lambda x: x in c1, sublist) for sublist in c2]

يقوم filter بفحص جميع عناصر القائمة الثانية ويتأكد من أنها غير موجود في القائمة الأول.
كما يمكنك أيضا استخدام intersection و set للحصول على العناصر المتكررة كما في المثال التالي:

>>> b1 = [1,2,3,4,5,9,11,15]
>>> b2 = [4,5,6,7,8]
>>> set(b1).intersection(b2)
set([4, 5])

ويمكنك أيضا عمل تغيير بسيط للسطر الأخير للمثال الذي وضعته وستحصل على ما تريد كما في المثال التالي:

[[n for n in lst if n in c1set] for lst in c2]
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...