آموزش روش احاطه ی لیست در پایتون
وقتی که می خواهیم یک لیست جدید بسته به مقادیرِ یک لیستِ موجود ایجاد کنیم، روش احاطه ی لیست(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
- بازدید: 79
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.