منو سایت

  • خانه
  • وبلاگ
  • حلقه های تودرتو در پایتون: راهنمای کامل

حلقه های تودرتو در پایتون: راهنمای کامل

 تاریخ انتشار :
/
  وبلاگ
حلقه های تودرتو در پایتون: راهنمای کامل

حلقه ها یک الگوی برنامه نویسی رایج در پایتون هستند. با یک حلقه، می توانید کد را بدون تلاش دستی تکرار کنید. به عنوان مثال، می توانید از یک حلقه برای حلقه زدن لیستی از نام ها و مرتب سازی آنها استفاده کنید. گاهی اوقات ممکن است لازم باشد یک حلقه را در یک حلقه دیگر قرار دهید. در برنامه نویسی به این حلقه تودرتو می گویند.

اگرچه هیچ چیز خاصی در مورد حلقه های تو در تو وجود ندارد، اما به عنوان یک مبتدی، ممکن است کمی ترسناک یا پر حرف به نظر برسند.

این یک راهنمای جامع برای حلقه های تو در تو در پایتون است. شما یاد خواهید گرفت که چگونه حلقه های تودرتو بسازید، از آنها جدا شوید، بین حلقه ها بپرید و خیلی چیزهای دیگر. تمام تئوری ها با مثال های گویا عالی پشتیبانی می شوند.

حلقه تودرتو در پایتون چیست؟

اصطلاح “تودرتو” اغلب در برنامه نویسی استفاده می شود.

طبق تعریف، کلمه “تودرتو” به معنای جسمی است که در داخل یک شی دیگر از همان نوع قرار می گیرد.

در پایتون، می توانید هر کد معتبری را در داخل یک حلقه قرار دهید. حتی ممکن است یک چرخه دیگر باشد.

حلقه ای که در داخل یک حلقه زندگی می کند، حلقه تودرتو نامیده می شود. توجه داشته باشید که حلقه تودرتو یک مفهوم فقط پایتون نیست. حلقه های تودرتو در همه زبان های برنامه نویسی دیگر وجود دارد، بنابراین این اصطلاح برای یادگیری خوب است!

یک حلقه تو در تو در پایتون چگونه کار می کند؟

هیچ محدودیتی برای تعداد حلقه هایی که می توانید در یک حلقه قرار دهید وجود ندارد.

برای نشان دادن نحوه عملکرد یک حلقه تو در تو، اجازه دهید یک حلقه تودرتو از دو حلقه را توصیف کنیم: کانتور بیرونی و کانتور داخلی.

نحو کلی یک حلقه for تو در تو چگونه است:

for element in sequence1:
   for element in sequence2:
      # inner loop body here
   # outer loop body here

هر تکرار حلقه بیرونی باعث می شود که حلقه داخلی تمام تکرارهای خود را انجام دهد. حلقه بیرونی تا زمانی که حلقه داخلی تمام نشود اجرا نمی شود.

برای روشن شدن: حلقه های تو در تو فقط برای حلقه ها نیستند. می‌توانید حلقه‌های while در داخل حلقه‌های while، حلقه‌های درون حلقه‌ها و موارد دیگر قرار دهید. حلقه تو در تو حلقه ای است که حداقل یک حلقه در داخل خود دارد.

یک سناریوی معمولی برای استفاده از یک حلقه تودرتو، هنگام کار با داده های چند بعدی است، مانند لیست لیست ها یا موارد مشابه.

بیایید چند نمونه ساده از حلقه های تو در تو را ببینیم.

مثال 1. Nested For loops

بیایید از یک حلقه تو در تو برای چاپ جدول ضرب 10 عدد اول استفاده کنیم.

for i in range(1, 11):
    for j in range(1, 11):
        print(i * j, end=" ")
    print()

خروجی:

1 2 3 4 5 6 7 8 9 10 
2 4 6 8 10 12 14 16 18 20 
3 6 9 12 15 18 21 24 27 30 
4 8 12 16 20 24 28 32 36 40 
5 10 15 20 25 30 35 40 45 50 
6 12 18 24 30 36 42 48 54 60 
7 14 21 28 35 42 49 56 63 70 
8 16 24 32 40 48 56 64 72 80 
9 18 27 36 45 54 63 72 81 90 
10 20 30 40 50 60 70 80 90 100

بیایید نگاهی دقیق تر به نحوه عملکرد این برنامه بیندازیم:

  1. کانتور بیرونی روی اعداد 1 تا 10 تکرار می شود و عدد فعلی را در یک متغیر موقت ذخیره می کند من. بنابراین در تکرار اول i = 1، در تکرار دوم i = 2 و غیره.
  2. حلقه داخلی همچنین اعداد از 1 تا 10 را تکرار می کند. حلقه داخلی عدد تکرار فعلی را در یک متغیر ذخیره می کند. او.
  3. برای هر تکرار مجزا از یک حلقه بیرونیحلقه داخلی به طور کامل اجرا می شود، یعنی 10 بار.
  4. به عنوان مثال، در طول اولین تکرار حلقه بیرونی، i = 1 در حالی که او می رود از 1 به 10. در طول تکرار دوم، i = 2و او می رود از 1 به 10 دوباره و غیره
  5. نتیجه یک جدول ضرب است که در آن هر عدد 1…10 در 1…10 ضرب می شود.
تصویری از قطعات یک حلقه تو در تو در پایتون

به هر حال، اگر می خواهید ضرب را به خوبی فرمت کنید تا اعداد در هر ستون تراز شوند، می توانید نتیجه ضرب را به رشته تبدیل کنید و استفاده کنید. str.ljust() روشی برای مجبور کردن عرض یکسان باشد.

در اینجا به صورت کد به نظر می رسد:

for i in range(1, 11):
    for j in range(1, 11):
        print(f"{i * j}".ljust(3), end=" ")
    print()

خروجی:

1   2   3   4   5   6   7   8   9   10  
2   4   6   8   10  12  14  16  18  20  
3   6   9   12  15  18  21  24  27  30  
4   8   12  16  20  24  28  32  36  40  
5   10  15  20  25  30  35  40  45  50  
6   12  18  24  30  36  42  48  54  60  
7   14  21  28  35  42  49  56  63  70  
8   16  24  32  40  48  56  64  72  80  
9   18  27  36  45  54  63  72  81  90  
10  20  30  40  50  60  70  80  90  100 

مثال 2. Nested while Loops

برای کامل بودن، بیایید مثال بالا را با استفاده از یک حلقه while تو در تو تکرار کنیم. هدف از این مثال نشان دادن این است که شما همچنین می توانید یک حلقه while داخل دیگری قرار دهید.

این هم کد:

i = 1
j = 1

while i <= 10:
    while j <= 10:
        print(i * j, end = " ")
        j += 1
    j = 1
    print()
    i += 1

خروجی:

1 2 3 4 5 6 7 8 9 10 
2 4 6 8 10 12 14 16 18 20 
3 6 9 12 15 18 21 24 27 30 
4 8 12 16 20 24 28 32 36 40 
5 10 15 20 25 30 35 40 45 50 
6 12 18 24 30 36 42 48 54 60 
7 14 21 28 35 42 49 56 63 70 
8 16 24 32 40 48 56 64 72 80 
9 18 27 36 45 54 63 72 81 90 
10 20 30 40 50 60 70 80 90 100 

در اینجا تصویری از بخش‌های حلقه while تودرتو در بالا آورده شده است:

حلقه های تودرتو در پایتون: راهنمای کامل

چگونه جریان یک حلقه تودرتو را کنترل کنیم؟

در پایتون می توانید جریان یا حلقه را کنترل کنید. دو دستور اصلی جریان کنترل در پایتون عبارتند از:

  1. قطع کردن. این قطع کردن عبارت از حلقه خارج می شود.
  2. ادامه داد. این ادامه داد تکرار فعلی حلقه را خاتمه می دهد و به مرحله بعدی می رود.

بیایید نگاهی دقیق تر به نحوه کار این عملگرها با حلقه های تو در تو در پایتون بیندازیم.

چگونه یک حلقه تودرتو را بشکنم؟

در پایتون می توانید استفاده کنید قطع کردن اپراتور خروجی حلقه اگر دلیلی برای ادامه تکرار وجود نداشته باشد این کار مفید است. به عنوان مثال، اگر از یک حلقه برای یافتن یک مقدار هدف استفاده می کنید، پس از یافتن هدف، حلقه باید متوقف شود.

بیایید یک مثال ساده از قطع کردن بیانیه در عمل:

target = 3

for number in range(10):
    print(number)
    if number == target:
        break

خروجی:

0
1
2
3

در اینجا حلقه زمانی به پایان می رسد که عدد تکرار 3 باشد که عدد هدف است.

در یک حلقه تو در تو، دستور break از حلقه داخلی خارج می شود اما به اجرای حلقه بیرونی ادامه می دهد. پس اگه زنگ بزنی قطع کردن عملگر در حلقه داخلی ساختار حلقه تودرتو، کل حلقه را متوقف نمی کند، فقط حلقه داخلی را متوقف می کند.

به عنوان مثال، بیایید یک نیم هرم از ستاره ها را چاپ کنیم تا تعداد ستاره ها، شماره خط در فرم خوانده شده باشد. از بالا تا پایین:

for i in range(1, 11):
    for j in range(1, 11):
        if j - i > 0:
            break
        print("*", end=" ")
    print()

خروجی:

* 
* * 
* * * 
* * * * 
* * * * * 
* * * * * * 
* * * * * * * 
* * * * * * * * 
* * * * * * * * * 
* * * * * * * * * *

در یک حلقه تو در تو مانند این، می توانید به آن فکر کنید من به عنوان شماره خط و او به عنوان شماره ستون

اینجا قطع کردن دستور از حلقه if داخلی خارج می شود j – i کمتر است از 0. به عبارت دیگر، در صورت شمارش ستاره، اجرای حلقه داخلی را متوقف می کنید

بزرگتر از شماره خط است

در مورد کنترل جریان یک حلقه با استفاده از دستور break بیشتر بخوانید.

چگونه یک حلقه تو در تو را ادامه دهم؟

در پایتون، عبارت continue به شما این امکان را می دهد که از «بقیه» یک تکرار حلقه رد شوید و تکرار بعدی را شروع کنید.

این عبارت کل حلقه را خاتمه نمی دهد، فقط تکرار فعلی را خاتمه می دهد. دستور continue در صورتی مفید است که دلیلی برای ادامه تکرار فعلی حلقه وجود نداشته باشد. به عنوان مثال، اگر می‌خواهید فقط اقداماتی را بر اساس یک شرط انجام دهید، می‌توانید از عبارت continue برای رد شدن از اقدامات استفاده کنید. شما می توانید استفاده کنید ادامه داد

  1. عبارت در یک حلقه تو در تو درست همانطور که از آن در یک حلقه استفاده می کنید. اگر تماس بگیرید ادامه داد بیانیهدر حلقه داخلی
  2. تکرار فعلی متوقف می شود و تکرار بعدی حلقه داخلی آغاز می شود. اگر تماس بگیرید ادامه داد بیانیهقبل از حلقه داخلی در بدنه حلقه بیرونی

سپس تکرار حلقه بیرونی با پرش از حلقه داخلی به تکرار بعدی می‌رود. به عنوان مثال، بیایید یک نیم هرم معکوس از ستاره ها را به گونه ای چاپ کنیم که تعداد ستاره ها، شماره خط در فرم خوانده شده باشد.پایین به بالا

for i in range(1, 11):
    for j in range(1, 11):
        if i + j > 11:
            continue
        print("*", end=" ")
    print()

:

* * * * * * * * * * 
* * * * * * * * * 
* * * * * * * * 
* * * * * * * 
* * * * * * 
* * * * * 
* * * * 
* * * 
* * 
* 

خروجی: اینجا ادامه داد دستورالعمل از حلقه داخلی به تکرار بعدی if می گذرد i + j بیشتر است از11. به عبارت دیگر، حلقه داخلی از چاپ ستاره پرش می شود (* ) ، اگر تعداد سطر به اضافه شماره ستون بیشتر از11

. به هر حال، نکته این است که نشان دهیم چگونه ادامه داد

عملگر به جای تمرکز بر جزئیات فرم در یک حلقه تودرتو کار می کند. با خیال راحت با مثال در ویرایشگر کد خود بازی کنید!

حلقه های تو در تو تک خطی با درک لیست در پایتون، با استفاده از آن می توانید حلقه ها را فشرده تر کنیدفهرست تفاهم ها

. این اجازه می دهد تا برای یک عبارت منظم در یک خط به جای گسترش حلقه در چندین خط کد.

مشابه نحوه ایجاد یک حلقه برای تو در تو، می توانید یک لیست تودرتو درک درست کنید. باید بحث شود که آیا فشرده سازی حلقه ها با استفاده از درک منطقی است یا خیر. برخی استدلال می کنند که این باعث می شود کد فشرده تر و راحت تر خوانده شود. دیگران می گویند این فقط کد را پیچیده تر می کند. اگر در حال ایجاد یک درک لیست تودرتو هستید، مراقب باشید.

mul_tab = [[i * j for  in range(1, 11)] for j in range(1, 11)]

for row in mul_tab:
    print(row)

کیفیت کد ممکن است به دلیل بیان پرمخاطب و ناخوانا آسیب ببیند. مطمئن شوید که فقط در صورت بهبود کیفیت کد، درک لیست را انجام می دهید!

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
[3, 6, 9, 12, 15, 18, 21, 24, 27, 30]
[4, 8, 12, 16, 20, 24, 28, 32, 36, 40]
[5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
[6, 12, 18, 24, 30, 36, 42, 48, 54, 60]
[7, 14, 21, 28, 35, 42, 49, 56, 63, 70]
[8, 16, 24, 32, 40, 48, 56, 64, 72, 80]
[9, 18, 27, 36, 45, 54, 63, 72, 81, 90]
[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

خروجی:

چگونه یک حلقه For تودرتو را به درک لیست تبدیل کنیم؟

در قسمت قبل نمونه ای از ایجاد درک لیست تودرتو از حلقه for تو در تو را مشاهده کردید. اما از مثال بالا مشخص نیست که واقعاً چگونه این کار را انجام می دهید.

[expression for outer_loop for inner_loop]

در اینجا طرحی برای ایجاد درک لیست تودرتو از حلقه‌های تودرتو آمده است:

ترتیب درک می تواند شما را گیج کند زیرا حلقه بیرونی در “قسمت درونی” درک اتفاق می افتد و حلقه داخلی در “قسمت بیرونی”. همچنین، در تبدیل اتفاق زیادی نمی افتد.

با این حال، اگر با درک لیست آشنا نیستید، باید مقاله جداگانه ای در این زمینه بخوانید!

به عنوان مثال، در اینجا تصویری وجود دارد که یک حلقه for تودرتو را به درک لیست تودرتو تبدیل می کند.

تبدیل یک حلقه تو در تو به درک لیست تودرتو در پایتون

خلاصه

امروز یاد گرفتید که حلقه های تودرتو در پایتون چگونه کار می کنند.

برای خانه، یک حلقه تو در تو به یک حلقه در یک حلقه اشاره دارد. در یک حلقه به تعداد دلخواه حلقه وجود دارد.

حلقه های تودرتو معمولاً هنگام کار با داده های چند بعدی، مانند لیست لیست ها یا جداول داده، کاربردی هستند.

به‌عنوان خلاصه‌نویسی، می‌توانید حلقه‌های تودرتو را به درک فهرست‌های تودرتو فشرده کنید. هنگام انجام این کار مراقب باشید تا خواندن کد را سخت‌تر نکنید.

با تشکر برای خواندن. کد نویسی مبارک!

همچنین بخوانید

برای حلقه ها در پایتون