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

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

TheBrain

السؤال

أملك قائمة متكونة من أعداد صحيحة مرتبة من الأصغر للأكبر كما تظهر في المثال التالي:

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


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

b = [4,4,2,1,2]

فما هي اسهل طريقة لفعل ذلك في البايثون؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

هنالك طرق عديدة في لغة بايثون لحساب عدد تكرارات عناصرها، وبما أن السلسلة النصية مرتبة فسيصبح أمر ترتيبها سهل للغاية.
يمكنك استخدام دالة groupby من وحدة itertools مع دوال len و list وحلقة تكرار for للحصول على ما تريد:

a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
from itertools import groupby
[len(list(group)) for key, group in groupby(a)]

وسيكون الناتج:

[4, 4, 2, 1, 2]

أما إذا كنت تستخدم الإصدار 2.7 من بايثون فيمكنك في هذه الحالة استخدام دالة Counter من وحدة collections حيث ستحصل بهذه الطريقة على قاموس يحتوي على العناصر وعدد مرات تكرار وإذا أردت الحصول على عدد مرات التكرار فقط فيمكنك استخدام دالة values() كما في المثال التالي:

import collections
a = [1,1,1,1,2,2,2,2,3,3,4,5,5]
counter=collections.Counter(a)
print(counter)
# Counter({1: 4, 2: 4, 3: 2, 5: 2, 4: 1})
print(counter.values())
# [4, 4, 2, 1, 2]
print(counter.keys())
# [1, 2, 3, 4, 5]
print(counter.most_common(3))
# [(1, 4), (2, 4), (3, 2)]
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...