در این مقاله، ما در مورد انواع مختلف حلقه ها در پایتون، نحو آنها و نحوه استفاده از دستورات شرطی برای بهبود تکرارهای پایتون صحبت خواهیم کرد.
حلقه های پایتون چیست؟
حلقه در پایتون دستورالعملی است که تا زمانی که یک شرط برقرار باشد تکرار می شود.
مثالهایی از حلقههای پایتون
# while loop
j = 0
while j < 3:
print(j)
j+=1
# For loop
for i in [0,1,2]:
print(i)
نحو حلقه های پایتون
سینتکس یک حلقه پایتون شامل کلمه کلیدی است که حلقه را ایجاد می کند (مثلاً for
، while
) شرایط و بدنه حلقه. بعد از شرط شروع بلوک حلقه و یک تورفتگی لازم برای هر خط در داخل کل بلوک حلقه، کاراکتر کولون (:) را در دستور خواهید دید.
# Python loop syntax
for elem in condition:
# body of the loop (indented)
while condition:
# body of the loop (indented)
انواع حلقه ها در پایتون
دو نوع حلقه در پایتون وجود دارد: for
حلقه ها و while
حلقه ها
را for
حلقه و while
حلقهها عبارتهای جریان کنترلی هستند که برای تکرار یک بلوک کد زیر شرایط خاص استفاده میشوند.
while
حلقه: تا زمانی که شرط True باشد به صورت بازگشتی حلقه بزنیدfor
حلقه: هر مقدار از یک دنباله را حلقه کنید
زمان استفاده از حلقهها و حلقههای while
را for
حلقه باید استفاده شود زمانی که شما نیاز دارید یک بلوک کد را برای تعداد ثابتی بارها تکرار کنید، یا زمانی که می خواهید از طریق یک شی قابل تکرار (مانند یک لیست) حلقه بزنید.
را while
حلقه باید در صورت نیاز استفاده شود یک بلوک کد را اجرا کنید یا یک شرط را در هر تکرار برای همیشه بررسی کنید.
Python while Loop
را while
حلقه در پایتون یک بلوک کد را تا زمانی که شرط وجود دارد اجرا می کند True
.
مشابه a if... else...
بلوکی که بارها و بارها تکرار می شود.
while condition:
# do something
یک حلقه while ساده ایجاد کنید
برای ایجاد یک ساده while
حلقه در پایتون استفاده کنید while
کلمه کلیدی، شرطی را برای تعریف زمانی که حلقه باید متوقف شود ارائه کنید و کد تورفتگی را اضافه کنید تا در هر تکرار درست بعد از کاراکتر کولون اجرا شود.
# Simple while loop
i = 0
while i < 5:
print(i)
i += 1
0
1
2
3
4
حلقه های while بی نهایت
طبق تعریف، while
حلقه ها تا زمانی که یک شرط برآورده شود تکرار می شوند. اگر شرط همیشه باشد True
، سپس حلقه تا بی نهایت ادامه خواهد داشت.
# Infinite Loop
import time
while True:
print('This is an infinite loop')
time.sleep(1)
شکستن یک حلقه while در پایتون
از آنجا که while
حلقه می تواند بی نهایت اجرا شود، مهم است که شرایطی را فراهم کنیم که در آن حلقه متوقف شود. این امر می تواند با فراهم آوردن شرایطی از جمله i < 5
، و افزایش i
تا زمانی که به 5 برسد یا با استفاده از break
بیانیه کنترل
# Simple while loop
i = 0
while i < 5:
print(i)
if i == 2:
break
i += 1
0
1
2
در حالی که … دیگری در پایتون
آ while
حلقه به طور مشابه به عنوان یک دستور if/else عمل می کند (اگر شرط True است، دوباره شروع کنید). بنابراین، از else
کلمه کلیدی برای تعریف اینکه چه کاری باید انجام شود while
حلقه تکرار را متوقف می کند.
# While Else
i = 0
while i < 5:
print(i)
i += 1
else:
print('i is greater than 5')
0
1
2
3
4
i is greater than 5
پایتون برای حلقه ها
را for
حلقه در پایتون بر روی هر عنصر از یک دنباله به ترتیب تکرار می شود و در هر تکرار یک بلوک کد را اجرا می کند.
مثال: برای هر مقدار در یک دنباله، کاری انجام دهید.
ساده برای حلقه
برای ایجاد یک ساده for
حلقه در پایتون استفاده کنید for
کلمه کلیدی، عنصری که باید روی آن تکرار شود، تکرارپذیر و کد تورفتگی را اضافه کنید تا در هر تکرار درست بعد از کاراکتر کولون اجرا شود.
# Simple for loop
for i in [1,2,3]:
print(i)
1
2
3
نحوه حلقه زدن از طریق یک رشته در پایتون
برای حلقه زدن از طریق یک رشته در پایتون، از حلقه for استفاده کنید و رشته پایتون را به عنوان تکرارپذیر در عبارت for ارائه کنید.
# Looping other types
for letter in 'python':
print(letter)
p
y
t
h
o
n
بیانیه های کنترل حلقه
دستورات کنترل در پایتون در حلقه ها برای کنترل جریان اجرا بر اساس شرایط خاص استفاده می شود. سه دستور جریان کنترل در حلقه های پایتون وجود دارد: break
، continue
و pass
.
عبارت Break در حلقه پایتون چیست؟
را break
دستور در حلقه پایتون برای متوقف کردن اجرای حلقه در صورت تحقق یک شرط استفاده می شود.
# Break
for letter in 'python':
print(letter)
if letter == 'h':
break
p
y
t
h
عبارت Continue در حلقه پایتون چیست؟
را continue
دستور در حلقه پایتون برای رد شدن از اجرای تکرار فعلی و رفتن به تکرار بعدی در حلقه استفاده می شود.
# Continue
for letter in 'python':
if letter == 'h':
continue
print(letter)
p
y
t
o
n
عبارت Pass in a Loop چیست؟
را pass
دستور به عنوان یک عملگر تهی در حلقهها و توابع پایتون استفاده میشود تا به برنامه بگوید در صورت برآورده شدن یک شرط کاری انجام ندهد. دستور pass تکرارها را در حلقهها متوقف نمیکند یا نمیگذرد، بلکه به سادگی هیچ کاری برای تکرار فعلی انجام نمیدهد.
# pass
for i in [1,2,3]:
pass
Looping Through the Range()
تابع range() اغلب در پایتون استفاده می شود for
حلقه هایی برای ارائه دنباله ای از اعداد صحیح برای for
بیانیه برای تکرار اغلب در مورد استفاده قرار می گیرد for
حلقه هایی برای تکرار روی عدد صحیح برای تعداد معینی از زمان.
تابع range() داخلی پایتون دنباله ای از اعداد را برمی گرداند که به طور پیش فرض از 0 شروع می شود.
حلقه ساده پایتون Range().
برای حلقه زدن و اجرای کد در تعداد مشخصی بار، از تابع range() در a استفاده کنید for
حلقه
# Looping a Range
for i in range(5):
print(i)
0
1
2
3
4
از پارامترهای Range() در Python For Loop استفاده کنید
برای تغییر مقدار شروع، پایان و افزایشی range
تابع در یک حلقه پایتون، فقط هر آرگومان تابع را به ترتیب مشخص شده تنظیم کنید، و سپس هر عنصر را با یک حلقه حلقه کنید. for
حلقه
# Range Parameters
rg = range(
2, # Start
20, # End
2 # Increment
)
for x in rg:
print(x)
2
4
6
8
10
12
14
16
18
نحوه ایجاد حلقه های Nested For
برای ایجاد یک حلقه for تو در تو در پایتون، کافی است یک تورفتگی در یک بلوک حلقه for اضافه کنید و حلقه اضافی را که باید ساخته شود را مشخص کنید. هیچ محدودیتی برای تعداد حلقه های تودرتو که می توانید در پایتون ایجاد کنید وجود ندارد.
Simple Nested For Loop در پایتون
برای ایجاد یک تو در تو ساده for
حلقه، با یک معمولی شروع کنید for
حلقه را با ارائه یک دنباله برای تکرار مجدد، و در داخل آن حلقه، یک حلقه اضافی ایجاد کنید for
حلقه با یک دنباله دیگر برای تکرار.
طبق قرارداد، حروف مورد استفاده به عنوان شناسه هر عنصر تکرار را هنگام ایجاد یک حلقه تودرتو افزایش دهید.
# Nested loop
for i in ['a','b','c']:
for j in ['d','e','f']:
print(i, j)
a d
a e
a f
b d
b e
b f
c d
c e
c f
از طریق لیست های تودرتو در پایتون حلقه بزنید
برای حلقه زدن لیست تودرتو در پایتون، از Nested استفاده کنید for
حلقه ها
# Loop a nested list
ls = [
[1,2,3],
[4,5,6]
]
for nst in ls:
for i in nst:
print(i)
1
2
3
4
5
6
نحوه حلقه زدن از طریق دیکشنری در پایتون
برای حلقه زدن از طریق دیکشنری در پایتون، از a استفاده کنید for
حلقه بزنید و فرهنگ لغت را به عنوان دنباله حلقه در نظر بگیرید. شما همچنین می توانید استفاده کنید .keys()
، .values()
و .items()
متد روی فرهنگ لغت برای حلقه زدن دنباله هایی که متدهای دیکشنری برمی گردند.
در اینجا یک فرهنگ لغت مثال است که در آن با a تکرار می کنیم for
حلقه
# Create dict
my_dict = dict(
name='JC',
last_name='Chouinard',
domain='jcchouinard.com',
twitter='ChouinardJC'
)
my_dict
{'name': 'JC',
'last_name': 'Chouinard',
'domain': 'jcchouinard.com',
'twitter': 'ChouinardJC'}
نحوه استفاده از روش های دیکشنری در حلقه های For
نتایج روشهای فرهنگ لغت را به صورت دنبالهای از for
حلقه به منظور تکرار از طریق کلیدها، مقادیر یا جفت های کلید-مقدار فرهنگ لغت پایتون.
my_dict.keys()
: یک لیست مانند را نشان می دهدdict_keys()
موضوع کلیدهای فرهنگ لغت شماmy_dict.values()
: یک لیست مانند را نشان می دهدdict_values()
موضوع ارزش های فرهنگ لغت شماmy_dict.items()
: یک لیست مانند را نشان می دهدdict_items()
شی با تاپل های حاوی فرهنگ لغت (کلیدها، مقادیر)
چگونه از طریق کلیدهای دیکشنری حلقه بزنیم
برای حلقه زدن کلیدهای فرهنگ لغت پایتون، از دیکشنری به عنوان دنباله استفاده کنید یا از آن استفاده کنید .keys()
روش برای ایجاد دنباله برای for
حلقه برای تکرار.
# Show dictionary keys
my_dict.keys()
dict_keys(['name', 'last_name', 'domain', 'twitter'])
مثالی از حلقه زدن کلیدهای دیکشنری
# Print Keys
for x in my_dict.keys():
print(x)
name
last_name
domain
twitter
چگونه از طریق مقادیر دیکشنری حلقه بزنیم
برای حلقه زدن مقادیر فرهنگ لغت پایتون، از .values()
روش برای ایجاد دنباله برای for
حلقه برای تکرار.
# Values method
my_dict.values()
dict_values(['JC', 'Chouinard', 'jcchouinard.com', 'ChouinardJC'])
نمونه ای از حلقه زدن از طریق ارزش های دیکشنری
# print values
for x in my_dict.values():
print(x)
JC
Chouinard
jcchouinard.com
ChouinardJC
نمونه ای از دسترسی به مقادیر دیکشنری بدون استفاده از .values()
روش.
# Print values
for x in my_dict:
print(my_dict[x])
JC
Chouinard
jcchouinard.com
ChouinardJC
چگونه از طریق آیتم های دیکشنری حلقه بزنیم
برای حلقه زدن از طریق جفت های کلید-مقدار فرهنگ لغت پایتون، از .item()
روش برای ایجاد دنباله برای for
حلقه برای تکرار.
# Items method
my_dict.items()
dict_items([('name', 'JC'), ('last_name', 'Chouinard'), ('domain', 'jcchouinard.com'), ('twitter', 'ChouinardJC')])
مثال 1: حلقه زدن از طریق دیکشنری بسته بندی جفت کلید-مقدار
# Print Keys and values
for x in my_dict.items():
print(x[0], x[1])
name JC
last_name Chouinard
domain jcchouinard.com
twitter ChouinardJC
مثال 2: حلقه زدن از طریق دیکشنری بدون بسته بندی جفت کلید-مقدار
# Print Keys and values
for key, value in my_dict.items():
print(key, value)
name JC
last_name Chouinard
domain jcchouinard.com
twitter ChouinardJC
نحوه حلقه زدن از طریق Iterators در پایتون
2 راه برای حلقه کردن و تکرار در پایتون وجود دارد: استفاده از next()
تابع یا با استفاده از یک تکنیک حلقه مانند a for
حلقه یا a while
حلقه
تکرار کننده پایتون شی ای است که می توان روی آن تکرار کرد.
# next()
ls = ['a','b','c']
en_object = iter(ls)
next(en_object)
(0, 'a')
# Looping an iterator
ls = ['a','b','c']
for letter in iter(ls):
print(letter)
a
b
c
چگونه از طریق یک DataFrame پاندا در پایتون حلقه بزنیم
برای حلقه زدن از طریق Pandas DataFrame در پایتون، می توانید از روش های مختلفی مانند iterrows()
، itertuples()
، یا به سادگی به ستون های DataFrame دسترسی پیدا کنید و آنها را به عنوان دنباله ای از آن ارسال کنید for
حلقه
# Create DataFrame
import pandas as pd
df = pd.DataFrame({
'column_1': [1, 2, 3],
'column_2': [4, 5, 6],
'column_3': [7, 8, 9]
})
df
چگونه می توان از طریق نام ستون های DataFrame Pandas Loop کرد
برای حلقه زدن نام ستون های Pandas DataFrame در پایتون، می توانید از DataFrame یا آن استفاده کنید. columns
نسبت داده و روی آن تکرار کنید. در اینجا یک مثال است:
# Loop each column name
for column in df:
print(column)
# Or
for column in df.columns:
print(column)
column_1
column_2
column_3
چگونه از طریق ردیف های یک DataFrame با iterrows () حلقه بزنیم
برای حلقه زدن در ردیف های یک Pandas DataFrame در پایتون، می توانید از iterrows()
تابع برای ایجاد دنباله مورد استفاده در a for
حلقه
مثال زیر یک تکرار کننده نمونه ساخته شده از Pandas DataFrame را نشان می دهد.
<generator object DataFrame.iterrows at 0x29ff0a730>
# Generator object
next(df.iterrows())
(0,
column_1 1
column_2 4
column_3 7
Name: 0, dtype: int64)
از فرمت برای استفاده کنید index,row in df.iterrows()
برای چرخش در ردیف های یک DataFrame Pandas.
# Looping rows of a Pandas DataFrame
for index, row in df.iterrows():
print(f'Index: {index}')
print(f'Row: {row}')
print(f'Row Type: {type(row)}')
Index: 0
Row: column_1 1
column_2 4
column_3 7
Name: 0, dtype: int64
Row Type: <class 'pandas.core.series.Series'>
Index: 1
Row: column_1 2
column_2 5
column_3 8
Name: 1, dtype: int64
Row Type: <class 'pandas.core.series.Series'>
Index: 2
Row: column_1 3
column_2 6
column_3 9
Name: 2, dtype: int64
Row Type: <class 'pandas.core.series.Series'>
به مقدار یک ردیف و ستون یک Pandas DataFrame دسترسی پیدا کنید
# Looping rows of a Pandas DataFrame
for index, row in df.iterrows():
print(f'Index: {index}')
print(f'Row for column 1: {row["column_1"]}')
Index: 0
Row for column 1: 1
Index: 1
Row for column 1: 2
Index: 2
Row for column 1: 3
نحوه دسترسی به ایندکس در یک حلقه for
پایتون داخلی دارد enumerate()
تابعی که می تواند برای دسترسی به ایندکس در a استفاده شود for
حلقه
# Accessing the index in a for loop
ls = ['a','b','c']
for index, elem in enumerate(ls):
print(index, elem)
0 a
1 b
2 c
نحوه شکستن چندین حلقه در پایتون
دو گزینه برای شکستن چندین حلقه در پایتون وجود دارد:
- با استفاده از یکی
break
دستور در هر حلقه و دستورات شرطی پیچیده، - با استفاده از حلقه داخل یک تابع و استفاده از
return
بیانیه برای شکستن همه حلقه ها.
در اینجا یک مثال است که در آن break
دستور همه حلقه ها را نمی شکند.
# Breaking out all loops
for i in range(10):
for j in ['a','b','c']:
print(i, j)
if j == 'b':
break
اگر تمام حلقه ها را شکسته بود، فقط دو ردیف چاپ می شد. در عوض، قبل از مقدار سوم شکست ('c'
) از حلقه تو در تو چاپ شد.
0 a
0 b
1 a
1 b
...
9 a
9 b
برای شکستن تمام حلقه های در حال اجرا، را اجرا کنید for
داخل تابع پایتون حلقه بزنید و از آن استفاده کنید return
بلافاصله از تابع محصور کردن خارج می شود. در این فرآیند، تمام حلقه ها متوقف خواهند شد.
# Breaking out of multiple for loops
def break_out():
for i in range(10):
for j in ['a','b','c']:
print(i, j)
if j == 'b':
return
break_out()
نتیجه دو ردیفی است که می خواهیم در این مورد چاپ شوند.
0 a
0 b
Underscore در Python for Loop چیست؟
خط زیر (_
) یک قرارداد مورد استفاده در پایتون است for
حلقه به این معنی است که یک عنصر توسط بلوک کد داخل حلقه استفاده نخواهد شد.
# understand the underscore in loops
t = [('a',1), ('b',2), ('c',3)]
ls = []
for letter, _ in t:
ls.append(letter)
ls
['a', 'b', 'c']
چگونه از حلقهها در پایتون اجتناب کنیم
پایتون for
حلقه ها برای تکرار در یک دنباله بسیار مفید هستند، اما نکات مثبتی برای به حداقل رساندن استفاده از for
حلقه ها:
- کاهش تعداد خطوط کد
- خوانایی بیشتر کد
3 راه برای جلوگیری از استفاده از حلقه های For
سه راه برای جلوگیری از استفاده وجود دارد for
حلقه های داخل کد پایتون
- درک مطالب را فهرست کنید
- نقشه + لامبدا
- فیلتر + لامبدا
حلقه زدن با درک لیست
درک لیست جایگزین خوبی برای جایگزینی پایتون ساده است for
حلقه زده و کد را خواناتر می کند. برای ایجاد درک فهرست، از کروشه های مربع ([]
) با فرمت زیر:
[element for element in sequence]
درک لیست یک شی لیست را برمی گرداند.
مثال زیر a را تبدیل می کند for
حلقه را با استفاده از درک فهرست مختصرتر انجام دهید.
# For loop
ls = []
for i in range(10):
ls.append(i)
# List Comprehension equivalent
ls2 = [i for i in range(10)]
print(ls) # for
print(ls2) # List comprehension
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
حلقه زدن با Map + Lambda
تابع لامبدا را می توان در داخل استفاده کرد map()
تابعی برای نگاشت یک دنباله به دیگری.
مثال زیر a را تبدیل می کند for
به نقشه مختصرتر + نتیجه لامبدا حلقه بزنید.
# Doubling a list with a for loop
ls = []
for i in range(10):
i *= 2
ls.append(i)
# Doubling a list with Map + Lambda
ls2 = map(lambda x: x * 2, range(10))
print(ls)
print(list(ls2))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
حلقه زدن با فیلتر + لامبدا
تابع لامبدا را می توان در داخل استفاده کرد filter()
تابع فیلتر کردن یک دنباله با استفاده از شرطی ها.
مثال زیر a را تبدیل می کند for
حلقه به یک فیلتر مختصر تر + نتیجه لامبدا.
# Get even numbers with for loop
even = []
for i in range(10):
if i % 2 == 0: # Even numbers
even.append(i)
# Get even numbers Filter + Lambda
even2 = filter(lambda n: n % 2 == 0, range(10))
print(even)
print(list(even2))
[0, 2, 4, 6, 8]
[0, 2, 4, 6, 8]
نتیجه
این پایان این آموزش در مورد حلقه های پایتون است.
استراتژیست سئو در Tripadvisor، Seek سابق (ملبورن، استرالیا). متخصص در سئو فنی. در تلاش برای سئوی برنامهریزی شده برای سازمانهای بزرگ از طریق استفاده از پایتون، R و یادگیری ماشین.