ترفندهایی از پایتون که نیاز هست همین امروز یاد بگیرید

ترفند های پایتون

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

خب به عنوان مرجع اصلی برای ترفند های پایتون این کتاب نوشته ی Dan Bader را پیشنهاد می کنم.

ترفند اول : تک-خط های قدرتمند

حتما شده تعداد زیادی خط جلوتون باشه و مشغول خوندنشون باشید و سردرگم بشید، بدتر اینکه درگیر یه تعداد عبارات شرطی تودرتو نیز بشید. برای مثال به عبارات شرطی زیر نگاهی بیاندازید:

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

حقیقتا میتونه به روش زیر ساده تر بشه :

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

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

>>> 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))))

ترفند دوم :‌مهارت کار با String به صورت سریع

پایتون ترفند های جالبی برای کار با Stringها داره، برای مثال برای معکوس کردن یک String کافیه از ::-1 به عنوان شاخص لیست استفاده کنید:

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

ترفند مشابهی برای لیستی از integer ها نیز قابل استفاده است.

>>> 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

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

یکی از کتابخانه های مفید پایتون 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

برای دیدن ویژگی های بیشتر کتابخانه itertools نگاهی به اینجا بی اندازید.

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

کتابخانه های متنوع و زیادی برای پایتون وجود داره که ماهیتشون ساده تر کردن کد نویسی به زبان پایتون هست، برای مثال کتابخانه Collectionرا در ذیل مشاهده کنید :

>>> 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})

مرجع مناسب برای پیدا کردن کتابخانه های مفید و کاربردی سایت های Github و Stack OverFlow هست.

ساخت String از روی یک لیست :

a = ["Geeks", "For", "Geeks"] 
print(" ".join(a)) 

ترفند پنجم : ترفند هایی برای ساده ترکردن Print در پایتون

به مثال زیر نگاه کنید :

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

حالا ساده شده تک خطی زیر رو نگاه کنید :

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

کدومشون ساده تر بود !!!

مثال زیر هم جالبه، اول روش سخت تر را مشاهده کنید:

>>> 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