• 0

كيف أقسّم قائمة بايثون إلى أقسام مُتساوية؟

لدي قائمة تحتوي على الأرقام من 1 إلى 1000 وأريد أن أقسّمها إلى عدة قوائم بحيث تحمل كل قائمة 10 عناصر. فكيف يُمكنني ذلك؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يُمكن تقسيم قائمة إلى أقسام متساوية بعدّة طرق منها:
الشّيفرة:

def chunks(l, n):
    """Yield successive n-sized chunks from l."""
    for i in xrange(0, len(l), n):
        yield l[i:i+n]

طريقة الاستعمال:

import pprint
pprint.pprint(list(chunks(range(10, 75), 10)))

[[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
 [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
 [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
 [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
 [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
 [60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
 [70, 71, 72, 73, 74]]

في الشّيفرة أعلاه أرجع البرنامج سبعة قوائم كلّ قائمة تحتوي على 10 عناصر بين القيمتين 10 و 75.
مع ملاحظة استبدال range بـxrange في بايثون 3.

يُمكنك كذلك الاعتماد على الدّالة التّاليّة:

def chunks(l, n):
    n = max(1, n)
    return [l[i:i + n] for i in range(0, len(l), n)]

الدّالة chunks أعلاه تقوم بإرجاع القوائم من القائمة l و n  هو عدد عناصر كل قائمة.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن