خانه / fd / پنج ترفند پایتون که باید حتماً بدانید — به زبان ساده

پنج ترفند پایتون که باید حتماً بدانید — به زبان ساده

شما چه یک مهندس هوش مصنوعی ارشد و چه یک دانشجوی سال اول زیست‌شناسی باشید، به هر حال در مقطعی با زبان برنامه‌نویسی پایتون مواجه خواهید شد. پایتون نخستین بار در سال ۱۹۹۱ انتشار یافت و به زبان محبوبی تبدیل یافت که از سوی برنامه‌نویس‌ها و اهالی فناوری مورد استفاده قرار می‌گیرد. بر اساس میزان نمایش سؤال‌های وب‌سایت Stack Overflow، پایتون به سرعت در حال تبدیل به محبوب‌ترین زبان برنامه‌نویس‌ها است.

رشد شگفت‌انگیز پایتون
رشد شگفت‌انگیز پایتون

پایتون یک زبان سطح بالا و تفسیری با ساختار نسبتاً ساده است و حتی برای افرادی که هیچ تجربه قبلی برنامه‌نویسی ندارند نیز عالی است. کتابخانه‌های محبوب پایتون کاملاً با آن یکپارچه شده‌اند و در رشته‌های مختلفی مانند بیوانفورماتیک (biopython)، علم داده (pandas)، یادگیری ماشین (keras/ tensorflow) و حتی نجوم (astropy) مورد استفاده قرار می‌گیرند. افرادی که زبان‌های جاوا و C را آموخته باشند، احتمالاً می‌توانند پایتون را به صورت خودآموز یاد بگیرند. با این که پایتون بسیار کندتر از جاوا و دیگر زبان‌ها اجرا می‌شود؛ اما در عمل با داشتن امکانات یکپارچه‌ای که به خوبی توسعه یافته‌اند، موجب بهبود بهره‌وری می‌شود.

پیش از آن که شروع به معرفی ترفندهای پایتون بکنیم، توصیه می‌کنیم که «تقلب نامه (Cheat Sheet) دستورهای پایتون» را مطالعه کنید. در این تقلب نامه، برخی نکات و ترفندهای مفید در مورد روش کدنویسی کارآمدتر در پایتون معرفی شده است. اگر از پایتون هیچ اطلاعاتی ندارید، پیشنهاد می‌کنیم مسیر یادگیری خود را از «آموزش برنامه‌نویسی پایتون – مقدماتی» آغاز کنید.

ترفند یکم: تک‌خطی‌های قدرتمند

آیا تاکنون تلاش کرده‌اید چندین خط را بخوانید و در میان گزاره‌های شرطی گم شده باشید؟ بنابراین گزاره‌های تک‌خطی پایتون مناسب شما هستند. برای نمونه گزاره‌های شرطی زیر را در نظر بگیرید:

>>> if alpha > 7: >>>    beta = 999 >>> elif alpha == 7: >>>    beta = 99 >>> else: >>>    beta = 0

این کد را می‌توان به صورت زیر کاملاً ساده‌سازی کرد:

>>> beta = 999 if alpha > 7 else (beta == 99 if alpha == 7 else 0)

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

>>> lst = [1, 3, 5] >>> doubled = []  >>> for num in lst: >>>    doubled.append(num*2)

را می‌توان به صورت تک خطی زیر ساده‌سازی کرد:

>>> doubled = [num * 2 for num in lst]

البته در صورتی که همه چیز را در گزاره‌های تک‌خطی به صورت زنجیری بنویسید ممکن است موجب سردرگمی ‌شود. باید اطمینان حاصل کنید که در کدهای خود بیش از حد از گزاره‌های تک‌خطی استفاده نمی‌کنید چون برخی افراد بر این باور هستند که استفاده فراوان از گزاره‌های تک‌خطی کاری «غیر پایتونی» محسوب می‌شود.

>>> import pprint; pprint.pprint(zip(('Byte', 'KByte', 'MByte', 'GByte', 'TByte'), (1 << 10*i for i in xrange(5))))

ترفند دوم: دستکاری سریع رشته‌ها

دستکاری رشته‌ها می‌تواند کاری پردردسر باشد؛ اما پایتون برخی میانبرهای پنهان برای ساده‌سازی عمده این قبیل کارها دارد. برای معکوس ساختن یک رشته می‌توانیم ۱-:: را مانند اندیس‌های لیست اضافه کنیم:

>>> a =  "ilovepython"  >>> print a[::-1]  nohtypevoli

همین ترفند را می‌توانیم در مورد یک لیست از اعداد صحیح نیز به کار بگیریم. دستکاری رشته‌ها در پایتون کاری بسیار آسان است. برای نمونه اگر می‌خواهید یک جمله را با استفاده از متغیرهای از پیش تعریف شده str1, str2 و lst3 در خروجی به صورت زیر ارائه کنید:

>>> str1 = "Totally" >>> str2 = "Awesome" >>> lst3 = ["Omg", "You", "Are"]

کافی است از متد()join. و عملگرهای حسابی برای ایجاد جمله مطلوب خود استفاده کنید:

>>> print ' '.join(lst3) Omg You Are >>> print ' '.join(lst3)+' '+str1+' '+str2 Omg You Are Totally Awesome

علاوه بر دستکاری رشته، معمولاً توصیه می‌شود که از عبارت‌های منظم (regex) نیز برای جستجوی مؤثر رشته‌ها و الگوهای فیلتراسیون استفاده کنید.

ترفند سوم: ترکیب تو در توی لیست‌ها

Itertools احتمالاً یکی از محبوب‌ترین کتابخانه‌های پایتون است. تصور کنید کد شما حاوی ده‌ها لیست است و پس از برخی دستکاری ها با لیست‌های تو در توی کاملاً درهم‌تنیده‌ای مواجه می‌شوید. Itertools دقیقاً آن چیزی است که برای رفع این آشفتگی نیاز دارید.

>>> import itertools >>> flatten = lambda x: list(itertools.chain.from_iterable(x)) >>> s = [['"', 'An', 'investment'], ['in'], ['knowledge'], ['pays'], ['the', 'best'], ['interest."', '--'], ['Benjamin'], ['Franklin']] >>> print(' '.join(flatten(s))) " An investment in knowledge pays the best interest." -- Benjamin Franklin

همان طور که در مثال فوق می‌بینید، می‌توانیم لیست‌ها و رشته‌های تو در تو را با استفاده از ()join. و itertools با هم ترکیب کنیم. متد ()combinations. در itertools نیز ابزار قدرتمندی برای بازگشت دادن طول زیر دنباله‌ای از عناصر iterable ورودی است. برای مطالعه بیشتر در مورد intertools به این آدرس (+) مراجعه کنید.

ترفند چهارم: ساختمان‌های داده ساده

اگر به ترفند یکم این راهنما مراجعه کنید، می‌بینید که استفاده از گزاره‌های تک‌خطی برای مقداردهی اولیه ساختمان‌های داده در پایتون بسیار ساده است. هارولد کوپر (Harold Cooper) یک ساختمان داده درخت تک‌خطی را با استفاده از کد زیر پیاده‌سازی کرده است:

>>> def tree(): return defaultdict(tree)

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

>>> reduce( (lambda r,x: r-set(range(x**2,N,x)) if (x in r) else r),          range(2,N), set(range(2,N)))

این نوع تابع‌ها را می‌توانید روی گیت‌هاب یا Stack Overflow مشاهده کنید. پایتون کتابخانه‌های قدرتمندی مانند Collections نیز دارد که به حل طیف متنوعی از مسائل واقعی بدون نوشتن کدهای طولانی کمک می‌کنند.

>>> from collections import Counter >>> myList = [1,1,2,3,4,5,3,2,3,4,2,1,2,3] >>> print(Counter(myList)) Counter({2: 4, 3: 4, 1: 3, 4: 2, 5: 1})

ترفند پنجم: پرینت آسان

آخرین ترفندی که در این نوشته معرفی می‌کنیم موردی است که شاید بسیاری از افراد آرزو کنند کاش زودتر آن را یاد گرفته بودند. برای پرینت کردن یک آرایه با رشته‌ها به صورت رشته‌ای جدا شده با کاما، نیازی نیست که از ()join. و حلقه‌ها استفاده کنیم:

>>> row = ["1", "bob", "developer", "python"] >>> print(','.join(str(x) for x in row)) 1,bob,developer,python

دستور ساده تک‌خطی زیر این کار را انجام می‌دهد:

>>> print(*row, sep=',') 1,bob,developer,python

ترفند جالب دیگر برای پرینت کردن، بهره‌گیری از enumerate است. enumerate یک تابع درونی پایتون است که به طرز خارق‌العاده‌ای مفید محسوب می‌شود. بنابراین به جای نوشتن یک کد چهار خطی برای پرینت کردن:

>>> iterable = ['a','b','c'] >>> c = 0  >>> for item in iterable:  >>>     print c, item  >>>     c+= 1 0 a 1 b 2 c

کافی است همان کد را در دو خط بنویسید:

>>> for c, item in enumerate(iterable): >>> print c, item

ترفند‌های مختلفی برای پرینت کردن دیگر نیز در پایتون وجود دارند که یکی از آن‌ها پرینت pretty به صورت pprint است. شما نیز اگر ترفندهای از پایتون را می‌شناسید که فکر می‌کنید برای خوانندگان مقاله ما مفید خواهند بود در بخش نظرات با ما و دیگر خوانندگان فرادرس در میان بگذارید.

اگر این نوشته برای شما مفید بوده است، پیشنهاد می‌کنیم از آموزش‌های زیر نیز استفاده کنید:

  • مجموعه آموزش‌های برنامه‌‌نویسی
  • آموزش برنامه نویسی پایتون – مقدماتی
  • مجموعه آموزش های برنامه نویسی پایتون
  • گنجینه آموزش های برنامه نویسی پایتون (Python)
  • آموزش یادگیری ماشین (Machine Learning) با پایتون (Python)
  • آموزش تکمیلی برنامه نویسی پایتون
  • زبان برنامه نویسی پایتون (Python) — از صفر تا صد
  • متدهای وهله‌ای، استاتیک و کلاس در پایتون — تفاوت‌های مهمی که باید بدانید
  • پایتون و روش کار با فایل های اکسل — از صفر تا صد

==

بلی خیر

نوشته پنج ترفند پایتون که باید حتماً بدانید — به زبان ساده اولین بار در وبلاگ فرادرس. پدیدار شد.

درباره ی admin

مطلب پیشنهادی

تعمیر یک هارد درایو خراب و بازیابی داده های آن— به زبان ساده

گفته شده که وقتی انسان می‌میرد، کل زندگیش در یک لحظه از جلوی چشمانش عبور می‌کند. البته همین اتفاق در صورتی که مطلع شوید با یک هارد درایو خراب مواجه شده‌اید نیز ممکن است برای شما می‌افتد! در این لحظه یاد هزاران عکس می‌افتید که از آن‌ها پشتیبان‌گیری نکرده‌اید و احتمالاً به فکر بازیابی آن‌ها بیفتید. در این مقاله روش این کار را توضیح می‌دهیم. اگر هارددیسک شما از کار بیفتد، با استفاده از این راهنما می‌توانید داده‌های خود را تعمیر و بازیابی کنید. داستان یک فرد نادم در این بخش داستانی را برای شما تعریف می‌کنیم که ممکن است برای هر کدام از ما اتفاق بیفتد. قهرمان داستان ما چند سال پیش با یک خرابی هارددیسک مواجه شده است. ابتدای قضیه از عملکرد عجیب لپ‌تاپ آغاز می‌شود. زمانی که این عملکرد عجیب پس از ریبوت لپ‌تاپ همچنان تداوم می‌یابد وی متوجه می‌شود که مشکل چیزی بیش از یک پر شدن ظرفیت RAM است. درنتیجه بی‌درنگ اقدام به پشتیبانی گیری از فایل‌های جدید خود می‌کند. نیم ساعت بعد هارددیسک با سر و صدا از کار می‌افتد و لپ‌تاپ دیگر بوت نمی‌شود. وی قبلاً نسخه‌های پشتیبانی از فایل‌های خود تهیه کرده بود؛ اما ش..

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *