به آموزشگاه مجازی سینا خوش آمدید!

آموزش روش احاطه ی لیست در پایتون

امتیاز
(0)

وقتی که می خواهیم یک لیست جدید بسته به مقادیرِ یک لیستِ موجود ایجاد کنیم، روش احاطه ی لیست(List comprehension) ، یک راه کوتاه تر را در پایتون به ما ارائه می دهد. به مثال زیر توجه کنید:

فرض کنید یک لیست از چند میوه داریم و می خواهیم یک لیست جدید ایجاد کنیم که تنها حاوی نام میوه هایی باشد که حرف "a" در آنها وجود داشته باشد. بدون استفاده از روش احاطه ی لیست، باید یک دستور for بنویسیم که در درون آن یک تست شرطی وجود داشته باشد:

مثال شماره 1

fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []

for x in fruits:
  if "a" in x:
    newlist.append(x)

print(newlist)

نتیجه:

['apple', 'banana', 'mango']
امتحان کنید

با استفاده از روش احاطه ی لیست(list comprehension) می توانیم با یک خط کد، تمام کارهای بالا را انجام دهیم:

مثال شماره 2

fruits = ["apple", "banana", "cherry", "kiwi", "mango"]

newlist = [x for x in fruits if "a" in x]

print(newlist)

نتیجه:

['apple', 'banana', 'mango']
امتحان کنید

شیوه ی نوشتاری یا سینتکس

newlist = [expression for item in iterable if condition == True]

مقدار برگشتی یک لیست جدید است و لیست قدیمی بدون تغییر باقی می‌ماند.


شرط یا Condition

شرط مورد نظر مانند یک فیلتر است و تنها آیتم هایی را قبول می کند که به صورت True ارزیابی شوند. 

مثال شماره 3

تنها آیتم هایی را قبول می کند که "apple" نباشند:

newlist = [x for x in fruits if x != "apple"]

نتیجه:

['banana', 'cherry', 'kiwi', 'mango']
امتحان کنید

شرط if x != "apple" برای تمام عناصر به جز "apple" مقدار True را برمی گرداند و باعث می شود لیست جدید، حاوی تمام میوه ها باشد به جز "apple". استفاده از شرط ها اختیاری است و می توانند از قلم انداخته شوند:

مثال شماره 4

بدون استفاده از دستور if:

newlist = [x for x in fruits]

نتیجه:

['apple', 'banana', 'cherry', 'kiwi', 'mango']
امتحان کنید

تکرار شونده یا Iterable

تکرار شونده(iterable) می تواند هر آبجکت قابل تکرار، مانند یک لیست یا یک تاپل(tuple) یا ست(set) یا غیره باشد. 

نکته: تکرار شونده، درواقع یک مجموعه است که روی اعضای آن حلقه زده می شود. 

مثال شماره 5

ما می توانیم برای ایجاد یک تکرار شونده(iterable) از تابع range() استفاده کنیم:

newlist = [x for x in range(10)]

نتیجه:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
امتحان کنید

نکته: تابع range() باعث می شود یک دنباله از اعداد از ایجاد شود. 

همین مثال اما با استفاده از یک شرط(condition):

مثال شماره 6

تنها اعداد کمتر از 5 قابل قبول هستند:

newlist = [x for x in range(10) if x < 5]

نتیجه:

[0, 1, 2, 3, 4]
امتحان کنید

عبارت یا Expression

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

مثال شماره 7

تنظیم مقادیر درون لیست جدید به حروف بزرگ:

newlist = [x.upper() for x in fruits]

نتیجه:

['APPLE', 'BANANA', 'CHERRY', 'KIWI', 'MANGO']
امتحان کنید

ما می توانیم نتیجه(outcome) را به هرچه که بخواهیم تنظیم کنیم:

مثال شماره 8

تنظیم تمام مقادیرِ درون لیست جدید به 'hello':

newlist = ['hello' for x in fruits]

نتیجه:

['hello', 'hello', 'hello', 'hello', 'hello']
امتحان کنید

عبارت یا expression همچنین می تواند حاوی شرط(condition) نیز باشد، نه مثل یک فیلتر، بلکه بعنوان یک روش برای دستکاری نتیجه(outcome):

مثال شماره 9

برگرداندن "orange" به جای "banana":

newlist = [x if x != "banana" else "orange" for x in fruits]

نتیجه:

['apple', 'orange', 'cherry', 'kiwi', 'mango']
امتحان کنید

عبارت(expression) درون مثال بالا می گوید: اگر آیتم برابر با banana نیست، آن را برگردان، اما اگر برابر با banana است، orange را برگردان. 

 


منبع: www.w3schools.com/python

 

  • بازدید: 78

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال