۳۰ قطعه کد مفید پایتون که باید با آنها آشنا باشید — راهنمای کاربردی

پایتون به یکی از محبوبترین زبانهایی تبدیل شده است که در حوزههای علم داده و یادگیری ماشین، توسعه وب، اسکریپتنویسی، اتوماسیون و حوزههای بسیار دیگر مورد استفاده قرار میگیرد. بخشی از دلیل این محبوبیت گسترده، سادگی و سهولت یادگیری آن است. شما که این مطلب را برای مطالعه انتخاب کردهاید، به احتمال بالا هم اینک از پایتون استفاده میکنید یا دستکم به آن علاقهمند هستید. در این مقاله به طور مختصر 30 قطعه کد مفید پایتون را معرفی میکنیم که میتوانید به سرعت آنها را یاد بگیرید و در امور روزمره خود در زمینههای مختلف به کار بگیرید.
1. همه عناصر یکتا
متد زیر بررسی میکند که آیا در لیست مفروض عناصر تکراری وجود دارد یا نه.
این متد از مشخصه ()set برای حذف عناصر تکراری از لیست استفاده میکند:
def all_unique(lst): return len(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): return Counter(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] for i in range(0,len(list), size)]
8. Compact
این متد با استفاده از ()filter مقادیر نادرست (False ،None ،0 و “”) را از یک لیست حذف میکند:
def compact(lst): return list(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 [each for each in string if each in 'aeiou'] get_vowels('foobar') # ['o', 'o', 'a'] get_vowels('gym') # []
13. خروج از حالت حروف بزرگ
متد زیر برای تبدیل حروف اول رشته مفروض به حروف کوچک استفاده میشود:
def decapitalize(str): return str[:1].lower() + str[1:] decapitalize('FooBar') # 'fooBar' decapitalize('FooBar') # 'fooBar'
14. مسطح سازی
قطعه کد زیر با استفاده از متدهای بازگشتی لیستهای تو در تو را به لیستهای مسطح تبدیل میکند:
def spread(arg): ret = [] for i in arg: if isinstance(i, list): ret.extend(i) else: ret.append(i) return ret def deep_flatten(xs): flat_list = [] [flat_list.extend(deep_flatten(x)) for x in xs] if isinstance(xs, list) else flat_list.append(xs) return flat_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) return list(comparison) difference([1,2,3], [1,2,4]) # [3]
16. تفاوت با...
متد زیر تفاوت بین دو لیست را پس از اعمال تابع روی تک تک عناصر هر دو لیست بازگشت میدهد:
def difference_by(a, b, fn): b = set(map(fn, b)) return [item for item in a if fn(item) not in b] 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 }], lambda v : v['x']) # [ { x: 2 } ]
17. فراخوانی زنجیری توابع
چندین تابع را میتوان در یک خط منفرد فراخوانی کرد:
def add(a, b): return a + b def subtract(a, b): return a - b a, b = 4, 5 print((subtract if a > b else add)(a, b)) # 9
18. بررسی وجود عناصر تکراری
متد زیر با استفاده از این واقعیت که ()set تنها شامل عناصر یکتا است، بررسی میکند آیا یک لیست مقادیر تکراری دارد یا نه:
def has_duplicates(lst): return len(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 return c 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): return dict(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"] for index, element in enumerate(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): return max(set(list), key = list.count) numbers = [1,2,1,2,3,2,1,4,2] most_frequent(numbers)
25. پالیندروم
متد زیر بررسی میکند آیا یک رشته پالیندروم است یا نه. پالیندروم به کلماتی گفته میشود که وقتی از انتها به ابتدا خوانده میشوند نیز همانند جهت ابتدا به انتها هستند. مانند درد، نادان و غیره.
def palindrome(a): return a == 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 = [] for i in arg: if isinstance(i, list): ret.extend(i) else: ret.append(i) return ret 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)
- ترفندهای برنامهنویسی در پایتون — از صفر تا صد
- پایتون یا جاوا، کدام بهتر است؟ — راهنمای جامع
==
کد منضورم بود سوتی دادم 🤦♂️
با سلام درتابع کانتوری درپایتون اگر.بخواییم جهات رو لحاظ کنیم تتا رو پیدا کنیم یعنی زاویه ای که با محورxها می سازه چه کدی رو باید اضافه کنیم ؟
سلام خیلی ممنون استفاده کردم و یکی از کد ها رو کپی کردم با ذکر منبع
سلام
اگه لطف کنید و کد جابجایی خودار نشانه گر موس روی برنامه ها رو بزارید.
با تشکر از شما
میتونی یه کار دیگه هم بکنی برای کپی کد ها بدون حلقه دقیقا این کود رو بنویس فقط به جای علامت سوال عدد دلخواهت رو بزار
(?*”HELLO”)Print
مثلا این HELLO رو مینویسه میتونی یه چیز دیگه هم بزاری راستی * به معنی ضرب هست و ** با معنی توان یعنی اگه بنویسی
(3**”hello”)print
باخطا رو برو میشی علتش هم اینکه که hello کلمه هست مقدار نیست که به خودش ضرب بشه یکم ریاضی قاتیش داره
ضرب*=×; توان**=^;
جمع=+