در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش پایتون (Python) به زبان خیلی ساده قسمت 16 : Comprehension

در این قسمت از آموزش پایتون راجع به مبحثی صحبت می کنیم به نام Comprehension که به شما این اجازه را می دهد تا با استفاده از یک یا چند حلقه اقدام به ایجاد ساختار های داده مورد نظر خود کنند. این کار بوسیله ترکیب حلقه ها و Condition Test ها انجام می شود که در این قسمت به بررسی روش های مختلف استفاده از تکنیک در زبان پایتون خواهیم پرداخت. برای شروع کد زیر را در نظر بگیرید:

>>> numbers=[]
>>> numbers.append(1)
>>> numbers.append(2)
>>> numbers.append(3)
>>> numbers.append(4)
>>> numbers.append(5)
>>> numbers.append(6)
>>> numbers
[1, 2, 3, 4, 5, 6]

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

>>> numbers=[]
>>> for num in range(1,7):
...     numbers.append(num)
...
>>> numbers
[1, 2, 3, 4, 5, 6]

یا اینکه خروجی تابع range را به صورت مستقیم در تابع list به صورت زیر استفاده کنیم:

>>> numbers=list(range(1,7))
>>> numbers
[1, 2, 3, 4, 5, 6]

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

[expression for item in iterable]

بخش expression عبارتی است که مشخص می کنید هر آیتم لیست چگونه ایجاد شود و بخش مقابل آن یعنی for item in iterable هم یک for ساده است که یک مجموعه قابل شمارش (همان iterable در عبارت بالا) را پیمایش می کند. مثال بالا که یک لیست از اعداد 1 تا 6 را ایجاد می کردیم را با تکنیک Comprehension بازنویسی می کنیم:

>>> numbers = [number for number in range(1,7)]
>>> numbers
[1, 2, 3, 4, 5, 6]

شاید با خودتون بگید که چه کاریه؟ خوب فقط از تابع range استفاده می کنیم! اما مزیت استفاده از این روش این هست که تو بخش expression میشه عملیات های مختلفی بر روی نتیجه هر آیتم لیست انجام داد. برای مثال، کد بالا رو جوری تغییر میدیم که لیست مورد نظر شامل اعداد بین 1 تا 6 باشه، اما هر عدد ضربدر 2:

>>> numbers = [number*2 for number in range(1,7)]
>>> numbers
[2, 4, 6, 8, 10, 12]

علاوه بر این موضوع می توان داخل عبارت های Comprehension از شرط ها نیز استفاده کرد که ساختار آن به صورت زیر است:

[expression for item in iterable if condition]

برای مثال، لیستی ایجاد می کنیم از اعداد زوج بین 1 تا 100:

>>> even_numbers = [number for number in range(1,101) if number % 2 == 0]
>>> event_numbers
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]

اگر میخواستیم کد عبارت بالا را به ترکیب حلقه ها و شرط if بنویسیم باید به صورت زیر اینکار را انجام می دادیم:

>>> even_numbers=[]
>>> for number in range(1,101):
...     if number % 2 == 0:
...         even_numbers.append(number)
...

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

>>> num_dic = {number: number*2 for number in range(1,11)}
>>> num_dic
{1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18, 10: 20}

دقت کنید که برای ایجاد دیکشنری به جای علامت های [] از {} استفاده شده برای نوشتن عبارت Comprehension. برای ایجاد مجموعه ها نیز از علامت های {} استفاده می کنیم، با این تفاوت که در بخش expression فقط یک آیتم مشخص می شود، در حالی که در دیکشنری بوسیله : دو آیتم مشخص می کردیم:

>>> num_set = {number*2 for number in range(1,11)}
>>> num_set
set([2, 4, 6, 8, 10, 12, 14, 16, 18, 20])

شاید فکر کنید که اگر به جای علامت های [] و {} از () استفاده کنیم که tuple برای ما ایجاد می شود، اما اینطور نیست و tuple ها از قابلیت Comprehension پشتیبانی نمی کنند و در صورت استفاده از پرانتز خروجی یک Generator Object است که در قسمت های بعدی در مورد آن ها توضیح خواهیم داد:

>>> num_tuple=(number for number in range(1,11))
>>> num_tuple
 at 0x02AE43F0>

در قسمت بعدی سری آموزشی زبان پایتون با توابع یا Function ها آشنا می شویم. ITpro باشید

نویسنده: حسین احمدی
منبع: جزیره برنامه نویسی وب سایت توسینسو
هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی است
#ایجاد_دیکشنری_در_پایتون #ایجاد_مجموعه_در_پایتون #تکنیک_comprehension_در_پایتون #ایجاد_لیست_در_پایتون #آموزش_پایتون #آموزش_برنامه_نویسی_پایتون #آموزش_زبان_پایتون
عنوان
1 آموزش پایتون (Python) به زبان خیلی ساده قسمت 1 : آشنایی با پایتون رایگان
2 آموزش پایتون (Python) به زبان خیلی ساده قسمت 2: نوشتن برنامه اول رایگان
3 آموزش پایتون (Python) به زبان خیلی ساده قسمت 3 : ساختار اسکریپت رایگان
4 آموزش پایتون (Python) به زبان خیلی ساده قسمت 4 : نوع داده ها رایگان
5 آموزش پایتون (Python) به زبان خیلی ساده قسمت 5 : تبدیل نوع داده رایگان
6 آموزش پایتون (Python) به زبان خیلی ساده قسمت 6 : عملگرها رایگان
7 آموزش پایتون (Python) به زبان خیلی ساده قسمت 7 : دستور شرطی IF رایگان
8 آموزش پایتون (Python) به زبان خیلی ساده قسمت 8 : حلقه ها رایگان
9 آموزش پایتون (Python) به زبان خیلی ساده قسمت 9 : توابع عددی و عدد رایگان
10 آموزش پایتون (Python) به زبان خیلی ساده قسمت 10 : رشته و توابع آن رایگان
11 آموزش پایتون (Python) به زبان خیلی ساده قسمت 11 : لیست ها رایگان
12 آموزش پایتون (Python) به زبان خیلی ساده قسمت 12 : Tuple ها رایگان
13 آموزش پایتون (Python) به زبان خیلی ساده قسمت 13 : دیکشنری ها رایگان
14 آموزش پایتون (Python) به زبان خیلی ساده قسمت 14 : مجموعه ها Sets رایگان
15 آموزش پایتون (Python) به زبان خیلی ساده قسمت 15 : Zip و پیمایش رایگان
16 آموزش پایتون (Python) به زبان خیلی ساده قسمت 16 : Comprehension رایگان
17 آموزش پایتون (Python) به زبان خیلی ساده قسمت 17 : توابع (Function رایگان
18 آموزش پایتون (Python) به زبان خیلی ساده قسمت 18 : Closure ها رایگان
19 آموزش پایتون (Python) به زبان خیلی ساده قسمت 19 : توابع بازگشتی رایگان
20 آموزش پایتون (Python) به زبان خیلی ساده قسمت 20 : ماژول ها رایگان
21 آموزش پایتون (Python) به زبان خیلی ساده قسمت 21 : پکیج ها رایگان
22 آموزش پایتون (Python) به زبان خیلی ساده قسمت 22 : شی گرایی رایگان
زمان و قیمت کل 0″ 0
1 نظر
Daek_Lord_Alireza

عالی بود ممنون

خیلی خوب یاد میدهید

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره پاییزه می تونی امروز ارزونتر از فردا خرید کنی ....