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

السؤال

نشر

أريد أن أجعل حلقة التكرار 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

Recommended Posts

  • 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)

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...