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

السؤال

نشر

لدي قائمتين بالشكل التالي:

>>> a
[[0, 1], [2, 3], [4, 5]]
>>> b
[[4, 5], [6, 7], [8, 9]]
>>>

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

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

أي أنه يجب أن يتم إعادة [4, 5] (الأرقام المكررة بينهما)، فكرت في أن أحول القائمتين إلى شكل أبسطك أولًا ثم أقارن بينهما، ولكن لم أتمكن من المقارنة بينهما كذلك

>>> a
[0, 1, 2, 3, 4, 5]
>>> b
[4, 5, 6, 7, 8, 9]
>>>

Recommended Posts

  • 1
نشر (معدل)

يمكنك استعمال دالة التقاطع intersect1d الكائنة بالمكتبة  numpy

انظر الكود اسفله:

 

```

import numpy as np

a = [0, 1, 2, 3, 4, 5]

b = [4, 5, 6, 7, 8, 9]

common_elements = np.intersect1d(a, b)

print(common_elements)

```

630d1eab3267f_Screenshotfrom2022-08-2921-16-31.thumb.png.949fae43b765c4b02b2efaa1288d15ac.pngان مكتبة numpy جد مفيدة في العمليات الرياضية على المصفوفات تجد هنا وثيقة تعريفها  .  في حالة عدم توفرك على المكتبة هده يمكنك تنزيلها عبر الأمر التالي في Terminal:

pip install numpy

تم التعديل في بواسطة Ayoub Souad
  • 1
نشر

يمكنك تحويل المصفوفتين إلى مجموعات و القيام بعملية تقاطع بينهما، على الشكل التالي:

a = [1, 2, 3, 4, 5]
b = [3, 4, 5, 6, 7]
s1 = set(a)
s2 = set(b)
ans = s1.intersection(s2)
print(ans)
# {3, 4, 5}

أي أننا هنا نقوم بتحويل ال list إلى set عن طريق استعمال set(a) مثلاً، و من ثم نقوم بعملية التقاطع باستعمال التابع intersection.

بالطبع يمكنك القيام بذلك بشكل يدوي، و هناك عدة طرق سأذكر أبسط واحدة بينها لسهولة الفهم و لكن هذه الطريقة غير مستحبة ﻷنها تستهلك زمن كبير في حال كانت المصفوفات كبيرة:

def shared(a, b):
  ans = []
  for i in a:
    if i in b:
      ans.append(i)
  return ans

a = [1, 2, 3, 4, 5]
b = [4, 5, 6, 7, 8]

ans = shared(a, b)
print(ans)
# [4, 5]

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

ثم نقوم بالمرور على عناصر المصفوفة الأولى، و نختبر فيما إذا كان العنصر الحالي موجود في المصفوفة الثانية، للتحقق من ذلك نستعمل المعامل in ، في حال تحقق الشرط نقوم بإضافة العنصر الحالي إلى المصفوفة ans عن طريق استعمال التابع append.

و لكن كما ذكرت مسبقاً يفضل استعمال المجموعات للتحقق من هذه الأمور، ﻷن أداءها أفضل.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...