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

السؤال

نشر

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

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

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

Recommended Posts

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

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...