الانتقال إلى المحتوى الرئيسي

كيفية العثور على نفس الأرقام في مصفوفة بايثون: الأساليب والأمثلة

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

هناك عدة طرق مختلفة لحل هذه المشكلة. الطريقة الأولى والأسهل هي استخدام حلقة تقارن بالتتابع كل عنصر من عناصر المصفوفة مع بقية العناصر. ومع ذلك ، فإن هذه الطريقة غير فعالة ، خاصة عند العمل مع المصفوفات الكبيرة ، لأن تعقيدها سيكون س(ن^2).

الطريقة الأكثر فعالية هي استخدام بنية البيانات" المحددة". مجموعة في بيثون هي مجموعة غير مرتبة من العناصر الفريدة. ميزة استخدام مجموعة هي سرعتها. يتم إجراء البحث عن عنصر في المجموعة في وقت ثابت س (1). إليك كيفية استخدام مجموعة للعثور على نفس الأرقام في صفيف:

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

  1. ما هو صفيف في بيثون?
  2. التعريف والخصائص الرئيسية
  3. طرق البحث عن أرقام متطابقة
  4. وصف وخوارزمية العملية
  5. 1. باستخدام جدول التجزئة (القاموس)
  6. 2. فرز المصفوفة
  7. الطريقة 1: استخدام حلقة ومشغل شرطي
  8. إيجابيات وسلبيات ، أمثلة التعليمات البرمجية
  9. الطريقة 2: استخدام مجموعات
  10. سؤال وجواب
  11. كيف أجد جميع الأرقام المكررة في صفيف في بيثون?
  12. كيف يمكنني العثور على أرقام فريدة فقط في صفيف في بيثون?
  13. كيف يمكنني العثور على نفس الأرقام في صفيف وحساب عددهم في بيثون?
  14. كيف يمكنني العثور على الرقم الأكثر تكرارا في مصفوفة في بايثون?
  15. كيف يمكنني العثور على جميع أزواج من الأرقام متطابقة في صفيف في بيثون?

ما هو صفيف في بيثون?

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

في بايثون ، يمكن إنشاء المصفوفات باستخدام طرق مختلفة ، على سبيل المثال:

  • إنشاء مصفوفة باستخدام الأقواس المربعة [];
  • استخدام وظيفة القائمة () لتحويل أنواع البيانات الأخرى إلى مصفوفة;
  • باستخدام وظيفة الصفيف () من وحدة الصفيف لإنشاء صفيف يحتوي على عناصر من نوع بيانات واحد فقط.

مثال على إنشاء مصفوفة باستخدام أقواس مربعة:

آر = [1, 2, 3, 4, 5]

يتم فهرسة المصفوفات في بايثون من الصفر ، أي أن العنصر الأول يحتوي على فهرس 0 ، والعنصر الثاني يحتوي على فهرس 1 ، وهكذا. هذا يعني أنه يمكننا الوصول إلى عناصر المصفوفة من خلال فهارسها:

آر = [1, 2, 3, 4, 5]

طباعة (آر[0]) # إخراج العنصر الأول من مجموعة-1

طباعة (آر[2]) # إخراج العنصر الثالث من الصفيف-3

يمكن أن تحتوي المصفوفات في بايثون على عناصر من أنواع بيانات مختلفة. على سبيل المثال ، يمكنك إنشاء مصفوفة تحتوي على كل من الأرقام والسلاسل:

آر = [1 ، "اثنان" ، 3.5 ، صحيح]

طباعة (آر)

خاصية أخرى مهمة للمصفوفات في بايثون هي القدرة على تغيير قيم عناصر المصفوفة. على سبيل المثال ، يمكننا تعيين قيمة جديدة لعنصر صفيف بناء على فهرسه:

آر = [1, 2, 3, 4, 5]

آر [0] = 10

طباعة (آر) # المخرجات [10, 2, 3, 4, 5]

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

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

يتيح لك استخدام المصفوفات في بايثون معالجة وتخزين كميات كبيرة من البيانات ومعالجة عناصر التجميع وحل مهام البرمجة المعقدة.

التعريف والخصائص الرئيسية

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

تحديد نفس الأرقام في المصفوفة هو عملية العثور على الأرقام التي تحدث عدة مرات في المصفوفة. المصفوفة هي بنية بيانات تخزن مجموعة من القيم الموضوعة بالتتابع في ذاكرة الكمبيوتر.

السمة الرئيسية للمصفوفة هي طولها ، أي عدد العناصر التي تحتوي عليها. كل عنصر من عناصر المصفوفة له فهرس خاص به يبدأ من الصفر.

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

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

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

طرق البحث عن أرقام متطابقة

في بايثون ، هناك عدة طرق للعثور على نفس الأرقام في صفيف. دعونا ننظر إلى بعض منهم.

طباعة (مكررة) # [2 ، 4]

باستخدام وحدة المجموعات:

تحتوي وحدة المجموعات على فئة العداد ، والتي تتيح لك حساب عدد العناصر المكررة في تسلسل. يمكنك إنشاء كائن عداد من صفيف المصدر وتحديد عناصر منه ، وعددها أكبر من 1.

  • من مجموعات استيراد العداد
  • أرقام = [1, 2, 2, 3, 4, 4, 5]

التكرارات = [س ل س ، عد في عداد (أرقام).العناصر () إذا كان العد > 1]

  1. وصف وخوارزمية العملية

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

المصفوفة هي بنية بيانات تخزن مجموعة مرتبة من العناصر من نفس النوع.

عنصر المصفوفة هو قيمة واحدة في المصفوفة.

فهرس العنصر هو رقمه الترتيبي في المصفوفة.

الأرقام المتطابقة هي أرقام تحدث مرتين أو أكثر في صفيف.

يمكن أن تختلف خوارزميات العثور على أرقام متطابقة في صفيف اعتمادا على الشروط والقيود المطلوبة للمهمة. دعونا ننظر في اثنين من الأساليب الأكثر شيوعا: استخدام جدول التجزئة (القاموس) وفرز صفيف.

1. باستخدام جدول التجزئة (القاموس)

مبدأ تشغيل الخوارزمية:

إنشاء قاموس فارغ لتخزين الأرقام وعددهم في صفيف.

لكل عنصر في المصفوفة:

إذا كان العنصر موجودا بالفعل في القاموس ، فقم بزيادة رقمه بمقدار 1.

إذا لم يكن العنصر في القاموس ، فأضفه بالقيمة 1.

Проверить, есть ли элементы в словаре, у которых количество больше 1. Если есть, то это одинаковые числа в массиве.

Пример реализации алгоритма:

def find_duplicates(arr):

counts = {}

duplicates = []

  1. for num in arr:
  2. if num in counts:

counts[num] += 1

else:

counts[num] = 1

for num, count in counts.items():

if count > 1:

duplicates.append(num)

return duplicates

array = [1, 2, 3, 4, 5, 2, 3, 4]

print(find_duplicates(array))

2. Сортировка массива

مبدأ الخوارزمية

هو فرز المصفوفة بترتيب تصاعدي أو تنازلي.

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

مثال على تنفيذ الخوارزمية:

ديف فيند_دوبليكاتس(آر):

آر.فرز () # فرز

مجموعة التكرارات = []

لأني في النطاق (لين (آر)-1):

إذا أر [أنا] = = أر [أنا + 1]:

التكرارات.إلحاق (ر [ط])

عودة التكرارات

صفيف = [1, 2, 3, 4, 5, 2, 3, 4]

طباعة (العثور على مكررات (صفيف))

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

الطريقة 1: باستخدام ل حلقة والمشغل الشرطي

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

قبل أن نبدأ ، دعونا إنشاء مجموعة مع الأرقام:

أرقام = [1, 2, 3, 4, 5, 6, 3, 7, 8, 5]

الآن دعنا ننشئ قائمة فارغة سنضيف إليها أرقاما مكررة:

التكرارات = []

بعد ذلك ، باستخدام اثنين متداخلة للحلقات ، سوف نتحقق مما إذا كانت هناك قيم مكررة في المصفوفة:

  • لأني في النطاق (لين (أرقام)):
  • ل ي في النطاق (أنا + 1 ، لين (أرقام)):

إذا أرقام [أنا] = = أرقام [ي] وأرقام [أنا] ليس في التكرارات:

  • التكرارات.إلحاق (أرقام [أنا])
  • نتيجة لتنفيذ هذا الرمز ، سيحتوي متغير التكرارات على قائمة بالأرقام المكررة.

أخيرا ، يمكننا طباعة الأرقام المكررة التي تم العثور عليها:

طباعة ("أرقام مكررة:" ، مكررة)

عند تنفيذ الكود أعلاه ، سيتم عرض النتيجة التالية على الشاشة:

الأرقام المتكررة: [3 ، 5]

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

إيجابيات وسلبيات ، أمثلة التعليمات البرمجية

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

إيجابي:

سهولة تنفيذ التعليمات البرمجية

أداء عالي

سلبيات:

Требует дополнительной памяти

Не подходит для больших массивов данных

Пример кода:

مواطنه العثور على_الأرقام المزدوجة(الأرقام):

عد_مرسوم = {}

التكرارات.إلحاق (الأسطوانات)

أرقام مكررة = العثور على أرقام مزدوجة (أرقام)

طباعة (أرقام مكررة) # الإخراج: [2 ، 3 ، 4]

В данном примере функция

العثور على أرقام مزدوجة

  1. يقبل مجموعة من الأرقام
  2. نومس
  3. ويستخدم القاموس

العد_مرسوم

لحساب عدد كل رقم في المصفوفة. بعد ذلك ، تتكرر الوظيفة من خلال القاموس وتضيف أرقاما برقم أكبر من 1 إلى القائمة

التكرارات

. أخيرا ، تقوم الوظيفة بإرجاع قائمة بالأرقام المكررة.

نتيجة لتنفيذ التعليمات البرمجية ، يتم عرض قائمة من الأرقام المكررة:

[2, 3, 4]

.

الطريقة 2: استخدام مجموعات

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

فيما يلي مثال على استخدام مجموعة للعثور على نفس الأرقام في صفيف:

قم بإنشاء مجموعة فارغة ، على سبيل المثال ، باستخدام منشئ المجموعة ().

انتقل من خلال كل عنصر من عناصر المصفوفة.

أضف العنصر الحالي إلى المجموعة. إذا كان موجودا بالفعل في المجموعة ، ثم لديك نسخة مكررة.

هنا مثال رمز:

ديف فيند_دوبليكاتس (صفيف):

# إنشاء مجموعة فارغة

أرقام فريدة = مجموعة ()

# إنشاء قائمة فارغة لتخزين التكرارات

التكرارات = []

للاسطوانات في مجموعة:

إذا الأسطوانات في أرقام فريدة من نوعها:

# إذا كان الرقم موجودا بالفعل في المجموعة,

إذن لدينا نسخة مكررة

التكرارات.إلحاق (الأسطوانات)

آخر:

# إضافة رقم إلى المجموعة

أرقام فريدة.إضافة (الأسطوانات)

عودة التكرارات

# مثال الاستخدام

صفيف = [1, 2, 3, 4, 5, 1, 2, 3]

طباعة (العثور على مكررات (صفيف))

# النتيجة: [1 ، 2 ، 3]

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