• 0

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

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

l = [1,2,3,4,5,6]

for i,k in ???:
    print str(i), '+', str(k), '=', str(i+k)

حيث ستكون المخرجات كالتالي:

1+2=3
3+4=7
5+6=11

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


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

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

from itertools import izip

def pairwise(iterable):
    "s -> (s0,s1), (s2,s3), (s4, s5), ..."
    a = iter(iterable)
    return izip(a, a)

for x, y in pairwise(l):
   print "%d + %d = %d" % (x, y, x + y)

أو يمكنك إنشاء دالة grouped() والتي تشبه كثيرا الدالة السابقة لكنها تختلف قليلا في آلية عملها كما تظهر في المثال التالي:

from itertools import izip

def grouped(iterable, n):
    "s -> (s0,s1,s2,...sn-1), (sn,sn+1,sn+2,...s2n-1), (s2n,s2n+1,s2n+2,...s3n-1), ..."
    return izip(*[iter(iterable)]*n)

for x, y in grouped(l, 2):
   print "%d + %d = %d" % (x, y, x + y)

ومن الطرق الأخرى أيضا للدوران حول كل عنصرين معا هي عن طريق إنشاء tuple يتكون من عنصرين كما في المثال التالي:

data = [1,2,3,4,5,6]
for i,k in zip(data[0::2], data[1::2]):
    print str(i), '+', str(k), '=', str(i+k)

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


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

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

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

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


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

تسجيل الدخول

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


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