تسلط بر درک پایتون: ایجاد کد کارآمد و خواندنی

بسیاری از کارها وجود دارد که پایتون می تواند انجام دهد، و یکی از چیزهایی که پایتون در آن خوب است این است که کد را خواناتر و به راحتی دنبال می کند. درک پایتون یکی از آن الگوهایی است که کد شما را کارآمدتر و خواناتر می کند، مگر اینکه زیاده روی کنید.
پس درک چیست؟ در اصطلاح فنی، درک مطلب روشی مختصر در پایتون برای ایجاد دنبالهها (مانند لیستها، مجموعهها و دیکشنریها) با استفاده از یک خط کد است.
بنابراین به زبان ساده، درک به شما کمک خواهد کرد که خلق کنید list
، set
، dict
، و generators
کارآمد و در قالبی خوانا تر.
پس بیایید شروع کنیم!
1. درک فهرست
همانطور که از نام آن پیداست، روشی فشرده برای ایجاد یک لیست است. فرض کنید می خواهید لیستی از تمام اعداد از 1 تا 10 ایجاد کنید. چگونه این کار را انجام می دهید؟
ممکن است بگویید فقط می توانید استفاده کنید range(1, 11)
برای به دست آوردن 1 تا 10. اما اکنون اگر بخواهید فقط اعداد فرد را بدست آورید، چگونه آن را بدست می آورید؟
برای بدست آوردن اعداد فرد:
odd_nums = [x for x in range(1, 11) if x % 2 != 0]
print(odd_nums) # Output: [1, 3, 5, 7, 9]
حالا با اعداد فرد، اگر مجذور آن اعداد را نیز می خواهید، می توانید این کار را انجام دهید:
squared_odd_nums = [x**2 for x in range(1, 11) if x % 2 != 0]
print(squared_odd_nums) # Output: [1, 9, 25, 49, 81]
حالا، اگر این کار را به روش سنتی انجام دهید، کد شما به این صورت خواهد بود:
squared_odd_nums = []
for num in range(1, 11):
if num % 2 != 0:
squared_odd_nums.append(num**2)
print(squared_odd_nums) # Output: [1, 9, 25, 49, 81]
2. درک مطلب را تنظیم کنید
اینجا نیازی به توضیح بیشتر نیست؛ درک مجموعه همان درک لیست است اما به جای نوشتن با []
(براکت های مربع)، استفاده خواهیم کرد {}
(براکت های فرفری).
squared_odd_nums = {num**2 for num in range(1, 11) if num % 2 != 0}
print(squared_odd_nums) # Output: {1, 9, 25, 49, 81}
3. درک فرهنگ لغت
یکی دیگر از مزایای درک مطلب این است که می توانید به راحتی یک فرهنگ لغت با یک خط ایجاد کنید. فرض کنید شما یک فرهنگ لغت از همه اعداد فرد و مقادیر مجذور آنها می خواهید. چگونه آن را انجام می دهید؟
آسان است!
squares = {num: num**2 for num in range(1, 11) if num % 2 != 0}
print(squares) # Output: {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
4. درک ژنراتور
آخرین موضوع ولی به همان اهمیت! بیایید ببینیم چگونه می توانیم با استفاده از درک مطلب یک مولد ایجاد کنیم.
نکته: ژنراتورها شبیه تاپل ها هستند اما اینطور نیستند.
squared_odd_nums = (num**2 for num in range(1, 11) if num % 2 != 0)
print(type(squared_odd_nums)) # Output:
print(list(squared_odd_nums)) # Output: [1, 9, 25, 49, 81]
حالا اگر واقعاً یک تاپل میخواهید، میتوانید این کار را انجام دهید:
squared_odd_nums = tuple(num**2 for num in range(1, 11) if num % 2 != 0)
print(type(squared_odd_nums)) # Output:
print(squared_odd_nums) # Output: (1, 9, 25, 49, 81)
ممکن است بپرسید چگونه از حلقه های تودرتو و شرایط با درک پایتون مانند حالت عادی استفاده کنیم for
حلقه بنابراین پاسخ شما اینجاست.
من قبلا نحوه استفاده را به شما نشان دادم if
بیانیه با درک مطلب اما اگر می خواهید استفاده کنید چه می شود if
و else
هر دو.
بیایید آن را با مثال اعداد فرد مشابهی که قبلاً استفاده کردیم، ببینیم. فرض کنید عدد فرد و مجذور عدد زوج را بین 1 تا 10 می خواهیم. چگونه این کار را انجام دهیم؟
numbers = [num**2 if num % 2 == 0 else num for num in range(1, 11)]
print(numbers) # Output: [1, 4, 3, 16, 5, 36, 7, 64, 9, 100]
در اینجا، ما این شرط را بررسی کرده ایم num % 2 == 0
(عدد زوج) می شود true
سپس آن را مربع کنید در غیر این صورت فقط عدد را ارسال کنید (عدد فرد).
بنابراین اکنون می خواهید بدانید که چگونه حلقه تودرتو را انجام خواهیم داد. بنابراین. فرض کنید می خواهیم ماتریس 3×3 را صاف کنیم.
در اینجا نحوه انجام این کار با درک لیست است.
matrix_3d = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
flattened_list = [col for row in matrix_3d for col in row]
print(flattened_list)
# Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]
در اینجا، هر ردیف را می گیرد و سپس از طریق هر عنصر آن ردیف تکرار می کند.
حال، اگر میخواهید از شرط با درک حلقه تودرتو استفاده کنید، نحوه انجام آن در اینجا آمده است.
matrix_3d = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
flattened_list = [col for row in matrix_3d for col in row if col % 2 != 0]
print(flattened_list)
# Output: [1, 3, 5, 7, 9]
شما می توانید استفاده کنید if-else
به همان روشی که برای درک حلقه تک استفاده می کنیم. بنابراین، این یک راهنمای برای درک در پایتون بود.
با توجه به موارد فوق، میتوان نتیجه گرفت که درک مطلب یک ویژگی قدرتمند در پایتون است که میتواند به شما در نوشتن کدهای تمیزتر و کارآمدتر کمک کند. اگر فکر می کنید، “چگونه می تواند سریعتر از یک حلقه معمولی باشد؟” برای درک بهتر آن، وبلاگ من را با عنوان نحوه خواندن و نوشتن داده های متوالی در پایتون به خوبی بررسی کنید.
برای نوشتن کدهای پایتونیک و قابل نگهداری بیشتر، درک را در آغوش بگیرید.