• 0

كيف أدور حول متكررين في بايثون؟

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

file1 = open('file1', 'r')
file2 = open('file2', 'r')
for item in one_then_another(file1, file2):
    print item

فما الطريقة الصحيحة لفعل ذلك؟

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


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

يوجد عدة طرق في لغة بايثون لفعل ذلك، فيمكنك على سبيل المثال استخدام دالة chain من وحدة itertools ومن ثم تمرير المتكررين كما في المثال التالي:

from itertools import chain
for line in chain(file1, file2):
   pass

ويمكنك أيضا فعل نفس الشيء عن طريق استخدام دالة input من مكتبة fileinput كما في المثال التالي:

import fileinput
for line in fileinput.input(['file1', 'file2']):
   pass

ويمكنك فعل ذلك أيضا عن طريق كتابة "مولد تعبير" بسيط كما في المثال التالي:

for line in (l for f in (file1, file2) for l in f):
    # do something with line

حيث أن بهذه الطريقة ستتمكن من وضع شرط معين على التعبير كالتالي:

for line in (l for f in (file1, file2) for l in f if 'text' in l):
    # do something with line which contains 'text'

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


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

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

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

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


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

تسجيل الدخول

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


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