برنامه نویسی ۲۶۶۵۱ بازدید

پایتون به یکی از محبوب‌ترین زبان‌هایی تبدیل شده است که در حوزه‌های علم داده و یادگیری ماشین، توسعه وب، اسکریپت‌نویسی، اتوماسیون و حوزه‌های بسیار دیگر مورد استفاده قرار می‌گیرد. بخشی از دلیل این محبوبیت گسترده، سادگی و سهولت یادگیری آن است. شما که این مطلب را برای مطالعه انتخاب کرده‌اید، به احتمال بالا هم اینک از پایتون استفاده می‌کنید یا دست‌کم به آن علاقه‌مند هستید. در این مقاله به طور مختصر 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

بدین ترتیب به پایان این راهنمای سریع و کاربردی در مورد قطعه کدهای مفید پایتون می‌رسیم. برای مشاهده موارد بیشتر می‌توانید به این ریپو (+) مراجعه کنید.

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

==

بر اساس رای ۳۰ نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

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

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

نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد.