اگر نیاز به تکرار روی یک دنباله از اعداد داشته باشید، تابع داخلی range() مفید است. این تابع توالیهای حسابی تولید میکند:
>>> for i in range(5): ... print(i) ... 0 1 2 3 4
نقطه پایانی داده شده هرگز بخشی از دنباله تولید شده نیست؛ range(10) ۱۰ مقدار تولید میکند، اندیسهای مجاز برای آیتمهای توالی با طول ۱۰. امکان دارد بازه را از عدد دیگری شروع کنید، یا گام متفاوتی (حتی منفی؛ گاهی به آن 'step' میگویند) مشخص کنید:
>>> list(range(5, 10)) [5, 6, 7, 8, 9] >>> list(range(0, 10, 3)) [0, 3, 6, 9] >>> list(range(-10, -100, -30)) [-10, -40, -70]
برای تکرار روی اندیسهای یک توالی، میتوانید range() و len() را ترکیب کنید:
>>> a = ['Mary', 'had', 'a', 'little', 'lamb'] >>> for i in range(len(a)): ... print(i, a[i]) ... 0 Mary 1 had 2 a 3 little 4 lamb
در بیشتر چنین مواردی، استفاده از تابع enumerate() راحتتر است (بخش «تکنیکهای حلقه» را ببینید).
چیزی عجیبی اتفاق میافتد اگر فقط یک range را چاپ کنید:
>>> range(10) range(0, 10)
به بسیاری از روشها شیء برگشتی توسط range() به نظر میرسد مانند یک لیست رفتار میکند، اما در واقع لیست نیست. این یک شیء است که وقتی روی آن تکرار میکنید، آیتمهای متوالی دنباله مطلوب را برمیگرداند، اما واقعاً لیست را ایجاد نمیکند، بنابراین فضای حافظه ذخیره میشود.
ما چنین شیئی را قابل تکرار (iterable) مینامیم، یعنی مناسب به عنوان هدف برای توابع و ساختارها که انتظار دارند چیزی داشته باشند که از آن بتوان آیتمهای متوالی را تا اتمام موجودیت گرفت. ما دیدیم که دستور for چنین ساختاری است، مثالی از تابعی که یک iterable میگیرد sum() است:
>>> sum(range(4)) # 0 + 1 + 2 + 3 6
بعداً توابع بیشتری خواهیم دید که iterable برمیگردانند و iterable به عنوان آرگومان میگیرند. در فصل «ساختارهای داده»، در مورد list() بیشتر بحث خواهیم کرد.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: https://docs.python.org/3/tutorial