آموزش حلقه For در python. حلقه for یکی از ابزارهای پرکاربرد برای تکرار روی مجموعهها (مثل لیستها، رشتهها، دیکشنریها و …) است. این حلقه به شما امکان میدهد که به صورت خودکار روی اعضای یک مجموعه تکرار کنید و هر بار عملیاتی را انجام دهید.
1. حلقه for و استفاده از آن برای تکرار بر روی مجموعهها
نحوه استفاده از حلقه for
در پایتون، ساختار پایهی حلقه for به شکل زیر است:
for item in collection: # عملیاتی که برای هر عضو مجموعه انجام میدهیم
در اینجا:
item: متغیری است که در هر بار تکرار به یکی از اعضای مجموعه (مثل لیست یا رشته) اختصاص داده میشود.
collection: مجموعهای است که قصد داریم بر روی آن تکرار کنیم (مثل لیست، رشته، دیکشنری و …).
بخش بعد از دو نقطه : شامل عملیاتی است که برای هر عضو مجموعه انجام میشود.
مثالهای کاربردی از حلقه for
1.1 تکرار بر روی لیستها
یک لیست را در نظر بگیرید و با استفاده از حلقه for بر روی آن تکرار کنید:
fruits = ["apple", "banana", "cherry"] for fruit in fruits: print(fruit)
خروجی:
apple banana cherry
در این مثال، متغیر fruit در هر بار تکرار به یکی از میوههای لیست اختصاص داده میشود و درون حلقه چاپ میشود.
1.2 تکرار بر روی رشتهها
حلقه for میتواند برای تکرار بر روی حروف یک رشته نیز استفاده شود:
text = "Python" for letter in text: print(letter)
خروجی:
P y t h o n
در اینجا، letter در هر بار تکرار به یکی از حروف رشته text اختصاص داده میشود.
1.3 استفاده از for برای دسترسی به ایندکس و مقدار در لیستها
گاهی اوقات ممکن است بخواهید هم مقدار و هم ایندکس یک عضو را در حین تکرار بدست آورید. برای این کار میتوانید از تابع enumerate() استفاده کنید:
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
print(f"Index: {index}, Fruit: {fruit}")
خروجی:
Index: 0, Fruit: apple Index: 1, Fruit: banana Index: 2, Fruit: cherry
در این مثال، enumerate(fruits) به ما هم ایندکس (index) و هم مقدار (fruit) هر عضو از لیست را میدهد.
1.4 تکرار بر روی دیکشنریها
در صورتی که بخواهید بر روی یک دیکشنری تکرار کنید، میتوانید از متدهای keys(), values(), یا items() استفاده کنید:
keys() برای دریافت کلیدهای دیکشنری
values() برای دریافت مقادیر دیکشنری
items() برای دریافت هر جفت کلید و مقدار
مثال:
person = {"name": "Alice", "age": 25, "city": "New York"}
for key, value in person.items():
print(f"Key: {key}, Value: {value}")
خروجی:
Key: name, Value: Alice Key: age, Value: 25 Key: city, Value: New York
1.5 استفاده از حلقه for برای انجام عملیاتهای عددی
حلقه for میتواند برای انجام عملیاتهای ریاضی یا شمارش در محدودههای مختلف نیز مورد استفاده قرار گیرد. برای مثال:
# حلقه ای که از 1 تا 5 تکرار میکند for i in range(1, 6): print(i)
خروجی:
1 2 3 4 5
در اینجا، تابع range(1, 6) یک محدوده از 1 تا 5 تولید میکند و حلقه for بر روی آن تکرار میکند.
1.6 استفاده از حلقه for با لیست درک (List Comprehension)
میتوان از حلقه for درون یک لیست درک برای ایجاد لیستهای جدید استفاده کرد. به عنوان مثال:
numbers = [1, 2, 3, 4, 5] squares = [x**2 for x in numbers] print(squares)
خروجی:
[1, 4, 9, 16, 25]
این روش باعث میشود که به جای استفاده از حلقه for معمولی، کد کوتاهتر و تمیزتری داشته باشیم.
1.7 نکات مهم:
استفاده از break و continue در حلقه for:
break به شما اجازه میدهد که حلقه را پیش از اتمام آن قطع کنید.
continue باعث میشود که یک تکرار خاص نادیده گرفته شده و حلقه به تکرار بعدی برود.
مثال با break:
for i in range(1, 10): if i == 5: break print(i)
خروجی:
1 2 3 4
مثال با continue:
for i in range(1, 10): if i % 2 == 0: continue print(i)
خروجی:
1 3 5 7 9
2. تابع range()
تابع range() یکی از ابزارهای پرکاربرد برای تولید یک دنباله از اعداد است. این تابع به طور خاص در حلقههای for مورد استفاده قرار میگیرد تا تعداد مشخصی از تکرارها را انجام دهد یا یک دنباله عددی را تولید کند.
ساختار تابع range()
تابع range() به صورت زیر استفاده میشود:
range(start, stop, step)
start: نقطه شروع (شمارش از این عدد آغاز میشود). مقدار پیشفرض برابر با 0 است.
stop: نقطه پایان (شمارش تا این عدد انجام میشود، اما این عدد در دنباله شامل نمیشود).
step: گام یا فاصله بین اعداد (مقدار پیشفرض برابر با 1 است).
آرگومانهای (start) و (step) اختیاری هستند، اما حداقل یک آرگومان (stop) لازم است.
2.1 استفاده از range() با یک آرگومان (فقط stop)
در این حالت، range() از 0 شروع میکند و تا عدد stop-1 میرود.
for i in range(5): print(i)
خروجی:
0 1 2 3 4
در اینجا، range(5) به این معنی است که دنبالهای از اعداد از 0 تا 4 تولید میشود (عدد 5 شامل نمیشود).
2.2 استفاده از range() با دو آرگومان (شروع و پایان)
در این حالت، شما میتوانید نقطه شروع و پایان را مشخص کنید. دنباله از عدد start شروع میشود و تا عدد stop-1 ادامه مییابد.
for i in range(2, 6): print(i)
خروجی:
2 3 4 5
در اینجا، range(2, 6) از عدد 2 شروع میکند و تا عدد 5 ادامه مییابد.
2.3 استفاده از range() با سه آرگومان (شروع، پایان و گام)
در اینجا شما میتوانید یک گام (فاصله) دلخواه برای پیشرفت اعداد مشخص کنید. به طور پیشفرض گام برابر 1 است، اما شما میتوانید آن را تغییر دهید.
for i in range(0, 10, 2): print(i)
خروجی:
0 2 4 6 8
در اینجا، range(0, 10, 2) دنبالهای از اعداد با گام 2 از 0 تا 8 تولید میکند.
2.4 استفاده از range() با گام منفی
اگر بخواهید از یک عدد بزرگتر به یک عدد کوچکتر شمارش کنید، میتوانید از گام منفی استفاده کنید. در این حالت، start باید بزرگتر از stop باشد.
for i in range(10, 0, -2): print(i)
خروجی:
10 8 6 4 2
در اینجا، range(10, 0, -2) از 10 شروع میشود و با گام منفی 2 به سمت 2 حرکت میکند.
2.5 تبدیل range() به لیست یا دیگر ساختارهای دادهای
اگر بخواهید دنبالهی تولید شده توسط range() را به یک لیست تبدیل کنید (و بهطور مستقیم مشاهده کنید)، میتوانید از تابع list() استفاده کنید:
numbers = list(range(1, 6)) print(numbers)
خروجی:
[1, 2, 3, 4, 5]
این به شما این امکان را میدهد که به سادگی دنباله اعداد را در قالب یک لیست مشاهده کنید.
2.6 بررسی range() در حافظه
یک نکته مهم در مورد range() این است که این تابع یک شیء قابل تکرار (iterable) تولید میکند و مقادیر آن را به صورت تنبل (lazy) تولید میکند. این یعنی مقادیر به طور همزمان در حافظه ذخیره نمیشوند و فقط در صورت نیاز محاسبه میشوند. به همین دلیل، استفاده از range() برای تولید دنبالههای طولانی بسیار بهینه است.
مثالهای کاربردی
۱. شمارش معکوس
برای شمارش معکوس میتوانید از range() با گام منفی استفاده کنید.
for i in range(10, 0, -1): print(i)
خروجی:
10 9 8 7 6 5 4 3 2 1
۲. استفاده در لیست درک (List Comprehension)
میتوانید از range() در لیست درک نیز استفاده کنید تا لیستهایی را بر اساس دنبالههای عددی ایجاد کنید.
squares = [x**2 for x in range(1, 6)] print(squares)
خروجی:
[1, 4, 9, 16, 25]
نکات مهم
شمارش از ۰: اگر فقط stop را به range() بدهید، شمارش از 0 شروع میشود.
شمارش معکوس: برای شمارش معکوس از یک عدد بزرگتر به کوچکتر، از گام منفی استفاده کنید.
لیستهای بزرگ: range() برای ایجاد دنبالههای بزرگ مناسب است چون از حافظه بهینه استفاده میکند.
