پایتون به یکی از محبوبترین زبانهایی تبدیل شده است که در حوزههای علم داده و یادگیری ماشین، توسعه وب، اسکریپتنویسی، اتوماسیون و حوزههای بسیار دیگر مورد استفاده قرار میگیرد. بخشی از دلیل این محبوبیت گسترده، سادگی و سهولت یادگیری آن است. شما که این مطلب را برای مطالعه انتخاب کردهاید، به احتمال بالا هم اینک از پایتون استفاده میکنید یا دستکم به آن علاقهمند هستید. در این مقاله به طور مختصر 30 قطعه کد مفید پایتون را معرفی میکنیم که میتوانید به سرعت آنها را یاد بگیرید و در امور روزمره خود در زمینههای مختلف به کار بگیرید.
1. همه عناصر یکتا
متد زیر بررسی میکند که آیا در لیست مفروض عناصر تکراری وجود دارد یا نه. این متد از مشخصه ()set برای حذف عناصر تکراری از لیست استفاده میکند:
def all_unique(lst): returnlen(lst)==len(set(lst)) x=[1,1,2,2,3,2,3,4,5,6] y=[1,2,3,4,5] all_unique(x)# False all_unique(y)# True |
2. آناگرام
این متد بررسی میکند که آیا دو رشته آناگرام هم هستند یا نه. منظور از آناگرام کلمه یا اصطلاحی است که از طریق بازچیدمان حروف کلمه یا اصطلاح دیگری به دست آمده باشد و به طور معمول حروف کلمه اصلی دقیقاً یک بار مورد استفاده قرار میگیرند:
from collections import Counter def anagram(first,second): returnCounter(first)==Counter(second) anagram("abcd3","3acdb")# True |
3. حافظه
قطعه کد زیر میزان استفاده از حافظه یک شیء را بررسی میکند:
import sys variable=30 print(sys.getsizeof(variable))# 24 |
4. اندازه بایت
این متد طول یک رشته از بایتها را بازگشت میدهد:
def byte_size(string): return(len(string.encode('utf-8'))) byte_size('?')# 4 byte_size('Hello World')# 11 |
5. پرینت یک رشته به میزان N بار
قطعه کد زیر یک رشته را n بار بدون استفاده از حلقه پرینت میکند:
n=2; s="Programming"; print(s *n);# ProgrammingProgramming |
6. بزرگنویسی حروف اول
قطعه کد زیر از متد ()title برای بزرگنویسی حروف اول همه کلمات یک رشته بهره میگیرد:
s="programming is awesome" print(s.title())# Programming Is Awesome |
7. Chunk
این متد یک لیست را بر اساس اندازه تعیین شده به لیستهای کوچکتری تقسیمبندی میکند:
def chunk(list,size): return[list[i:i+size]foriinrange(0,len(list),size)] |
8. Compact
این متد با استفاده از ()filter مقادیر نادرست (False ،None ،0 و “”) را از یک لیست حذف میکند:
def compact(lst): returnlist(filter(bool,lst)) compact([0,1,False,2,'',3,'a','s',34])# [ 1, 2, 3, 'a', 's', 34 ] |
9. Count by
قطعه کد زیر برای محاسبه ترانهاده یک آرایه 2 بعدی مورد استفاده قرار میگیرد:
array=[['a','b'],['c','d'],['e','f']] transposed=zip(*array) print(transposed)# [('a', 'c', 'e'), ('b', 'd', 'f')] |
10. مقایسه زنجیری
با استفاده از متد زیر میتوانید هر نوع عملگری را در یک خط منفرد به صورت چندباره مقایسه کنید:
a=3 print(2<a<8)# True print(1==a<2)# False |
11. جدا شده با کاما
قطعه کد زیر برای تبدیل یک لیست از رشتهها به رشته منفرد استفاده میشود، به طوری که هر عنصر از لیست با کاما جدا شده باشد:
hobbies=["basketball","football","swimming"] print("My hobbies are:")# My hobbies are: print(", ".join(hobbies))# basketball, football, swimming |
12. به دست آوردن حروف صدادار
قطعه کد زیر حروف صدادار انگلیسی (یعنی a، e، i، o و u) را در یک رشته پیدا میکند:
def get_vowels(string): return[eachforeachinstringifeachin'aeiou'] get_vowels('foobar')# ['o', 'o', 'a'] get_vowels('gym')# [] |
13. خروج از حالت حروف بزرگ
متد زیر برای تبدیل حروف اول رشته مفروض به حروف کوچک استفاده میشود:
def decapitalize(str): returnstr[:1].lower()+str[1:] decapitalize('FooBar')# 'fooBar' decapitalize('FooBar')# 'fooBar' |
14. مسطح سازی
قطعه کد زیر با استفاده از متدهای بازگشتی لیستهای تو در تو را به لیستهای مسطح تبدیل میکند:
def spread(arg): ret=[] foriinarg: ifisinstance(i,list): ret.extend(i) else: ret.append(i) returnret def deep_flatten(xs): flat_list=[] [flat_list.extend(deep_flatten(x))forxinxs]ifisinstance(xs,list)elseflat_list.append(xs) returnflat_list deep_flatten([1,[2],[[3],4],5])# [1,2,3,4,5] |
15. تفاوت
این متد تفاوت بین دو عنصر تکرارپذیر را با نگهداشتن آیتمهای مشترک بر مبنای عنصر اول پیدا میکند:
def difference(a,b): set_a=set(a) set_b=set(b) comparison=set_a.difference(set_b) returnlist(comparison) difference([1,2,3],[1,2,4])# [3] |
16. تفاوت با…
متد زیر تفاوت بین دو لیست را پس از اعمال تابع روی تک تک عناصر هر دو لیست بازگشت میدهد:
def difference_by(a,b,fn): b=set(map(fn,b)) return[item foritem inaiffn(item)notinb] from math import floor difference_by([2.1,1.2],[2.3,3.4],floor)# [1.2] difference_by([{'x':2},{'x':1}],[{'x':1}],lambdav:v['x'])# [ { x: 2 } ] |
17. فراخوانی زنجیری توابع
چندین تابع را میتوان در یک خط منفرد فراخوانی کرد:
def add(a,b): returna+b def subtract(a,b): returna-b a,b=4,5 print((subtract ifa>belseadd)(a,b))# 9 |
18. بررسی وجود عناصر تکراری
متد زیر با استفاده از این واقعیت که ()set تنها شامل عناصر یکتا است، بررسی میکند آیا یک لیست مقادیر تکراری دارد یا نه:
def has_duplicates(lst): returnlen(lst)!=len(set(lst)) x=[1,2,3,4,5,5] y=[1,2,3,4,5] has_duplicates(x)# True has_duplicates(y)# False |
19. ادغام دو دیکشنری
متد زیر برای ادغام دو دیکشنری استفاده میشود:
def merge_two_dicts(a,b): c=a.copy() # make a copy of a c.update(b) # modify keys and values of a with the ones from b returnc a={'x':1,'y':2} b={'y':3,'z':4} print(merge_two_dicts(a,b))# {'y': 3, 'x': 1, 'z': 4} |
در پایتون 3.5 و بالاتر میتوان ادغام دو دیکشنری را به صورت زیر نیز انجام داد:
def merge_dictionaries(a,b) return{**a,**b} a={'x':1,'y':2} b={'y':3,'z':4} print(merge_dictionaries(a,b))# {'y': 3, 'x': 1, 'z': 4} |
20. تبدیل دو لیست به یک دیکشنری
متد زیر برای تبدیل دو لیست به یک دیکشنری مورد استفاده قرار میگیرد:
def to_dictionary(keys,values): returndict(zip(keys,values)) keys=["a","b","c"] values=[2,3,4] print(to_dictionary(keys,values))# {'a': 2, 'c': 4, 'b': 3} |
21. استفاده از enumerate
قطعه کد زیر نشان میدهد که میتوان از enumerate برای دریافت مقادیر و همچنین اندیسهای لیستها استفاده کرد:
list=["a","b","c","d"] forindex,element inenumerate(list): print("Value",element,"Index ",index,) # ('Value', 'a', 'Index ', 0) # ('Value', 'b', 'Index ', 1) #('Value', 'c', 'Index ', 2) # ('Value', 'd', 'Index ', 3) |
22. زمان صرف شده
قطعه کد زیر برای محاسبه زمان صرف شده برای اجرای یک کد خاص کاربرد دارد:
import time start_time=time.time() a=1 b=2 c=a+b print(c)#3 end_time=time.time() total_time=end_time-start_time print("Time: ",total_time) # ('Time: ', 1.1205673217773438e-05) |
23. Try else
شما میتوانید else را به عنوان بخشی از یک بلوک try/except داشته باشید که در صورت عدم وجود استثنا اجرا میشود:
try: 2*3 except TypeError: print("An exception was raised") else: print("Thank God, no exceptions were raised.") #Thank God, no exceptions were raised. |
24. بیشترین فراوانی
متد زیر عنصر دارای بیشترین فراوانی را در یک لیست بازگشت میدهد:
def most_frequent(list): returnmax(set(list),key=list.count) numbers=[1,2,1,2,3,2,1,4,2] most_frequent(numbers) |
25. پالیندروم
متد زیر بررسی میکند آیا یک رشته پالیندروم است یا نه. پالیندروم به کلماتی گفته میشود که وقتی از انتها به ابتدا خوانده میشوند نیز همانند جهت ابتدا به انتها هستند. مانند درد، نادان و غیره.
def palindrome(a): returna==a[::-1] palindrome('mom')# True |
26. ماشین حساب بدون if-else
قطعه کد زیر نشان میدهد که چطور میتوان یک ماشین حساب را بدون استفاده از گزارههای شرطی if-else نوشت.
import operator action={ "+":operator.add, "-":operator.sub, "/":operator.truediv, "*":operator.mul, "**":pow } print(action['-'](50,25))# 25 |
27. Shuffle
قطعه کد زیر برای تصادفی سازی ترتیب عناصر در یک لیست استفاده میشود. توجه کنید که shuffle درجا عمل میکند و مقدار none بازگشت میدهد:
from random import shuffle foo=[1,2,3,4] shuffle(foo) print(foo)# [1, 4, 3, 2] , foo = [1, 2, 3, 4] |
28. Spread
این متد یک لیست را مانند [].concat(…arr) در جاوا اسکریپت مسطح میسازد:
def spread(arg): ret=[] foriinarg: ifisinstance(i,list): ret.extend(i) else: ret.append(i) returnret spread([1,2,3,[4,5,6],[7],8,9])# [1,2,3,4,5,6,7,8,9] |
29. تعویض مقادیر
یک روش سریع برای تعویض دو متغیر بدون الزام به استفاده از متغیر سوم:
a,b=-1,14 a,b=b,a print(a)# 14 print(b)# -1 |
30. دریافت مقدار پیشفرض برای کلیدهای مفقود
قطعه کد زیر نشان میدهد که چگونه میتوانید یک مقدار پیشفرض را در حالتی که کلید مورد نظر در دیکشنری موجود نباشد به دست آورید:
d={'a':1,'b':2} print(d.get('c',3))# 3 |
بدین ترتیب به پایان این راهنمای سریع و کاربردی در مورد قطعه کدهای مفید پایتون میرسیم. برای مشاهده موارد بیشتر میتوانید به این ریپو (+) مراجعه کنید.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی پایتون Python
- مجموعه آموزشهای برنامهنویسی
- گنجینه آموزشهای برنامه نویسی پایتون (Python)
- ترفندهای برنامهنویسی در پایتون — از صفر تا صد
- پایتون یا جاوا، کدام بهتر است؟ — راهنمای جامع
==
«میثم لطفی» دانشآموخته ریاضیات و شیفته فناوری به خصوص در حوزه رایانه است. وی در حال حاضر علاوه بر پیگیری علاقهمندیهایش در رشتههای برنامهنویسی، کپیرایتینگ و محتوای چندرسانهای، در زمینه نگارش مقالاتی با محوریت نرمافزار نیز با مجله فرادرس همکاری دارد.
بر اساس رای 12 نفر
آیا این مطلب برای شما مفید بود؟