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

السؤال

نشر

السلام عليكم ورحمة الله وبركاته

لذدي مشكلة بسيطة :

إذا كان معي لستين L1 و L2 وأريد تقسيم اللست الأولى إعتمادا على اللست الثانية مثل ما يظهر في الصورة..

كيف أستطيع فعل ذلك؟

و جزاكم الله خيرا

 

 

111.png

Recommended Posts

  • 1
نشر

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

يمكن كتابة كود بايثون بالشكل التالي:

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

new_list = []
temp = []
c = 0
for i in a:
  if i in b:
    c += 1
  if c == 2:
    new_list.append(temp)
    temp = [i]
    c = 1
  else:
    temp.append(i)

if temp:
  new_list.append(temp)

for i in new_list:
  print(i)

في البداية قمت بتعريف لائحتين حسب الدخل الذي قمت بإرفاقه.

ثم نقوم بتعريف المتغيرات التي تحدثت عنها، حيث أن new_list ستخزن الناتج النهائي، و temp ستكون لائحة لتخزين العناصر التي لدينا حتى الآن، و c هو عداد يعد كم عنصر لدينا منذ آخر تقسيم يوجد في اللائحة b.

نقوم بالمرور على كافة العناصر في a، في حال كان العنصر الحالي موجود في b نقوم بزيادة العداد.

الآن في حال وصل العداد إلى الرقم 2 فهذا يعني أنه لدينا عددين موجودين ضمن اللائحة b و هذا لا يجوز، لذلك علينا القيام بعملية تقسيم هنا، فنقوم بإضافة ما لدينا حتى الآن إلى اللائحة new_list ثم نقوم بجعل اللائحة temp تحتوي آخر عنصر (أي العنصر الحالي) فقط، و ذلك ﻷننا قمنا بعملية تقسيم و كافة العناصر السابقة ذهبت إلى اللائحة new_list، و يصبح العداد 1 (حيث أنه لدينا عدد واحد فقط في اللائحة temp و في اللائحة b).

في حال لم يكن العداد قد وصل إلى الرقم 2 فنقوم فقط بإضافة العنصر الحالي إلى اللائحة temp.

في النهاية نتحقق في حال كان لا يزال لدينا عناصر في اللائحة temp فنقوم بإضافتها إلى اللائحة new_list.

و نقوم بطباعة العناصر، كل عنصر في سطر.

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...