برنامه نویسی

راهنمای ماژول مجموعه Python: Usecase و Example

Summarize this content to 400 words in Persian Lang

مقدمه

هنگام کار با پایتون، کانتینرهای استاندارد مانند لیست ها، دیکشنری ها، تاپل ها و مجموعه ها انعطاف پذیری و سهولت استفاده را برای اکثر وظایف فراهم می کنند. با این حال، برای سناریوهای تخصصی تر، پایتون collections ماژول انواع داده کانتینر بسیار بهینه شده را ارائه می دهد. این پست در مورد رایج ترین موارد استفاده از آن توضیح می دهد collections ماژول، با مثال ها و راهنمایی در مورد زمان استفاده از هر یک کامل می شود.

1. namedtuple

استفاده از مورد

ایجاد اشیاء سبک وزن و تغییرناپذیر شبیه به تاپل، اما با فیلدهای نامگذاری شده برای خوانایی و قابلیت استفاده بهتر.

مثال

from collections import namedtuple

Point = namedtuple(‘Point’, [‘x’, ‘y’])
p = Point(10, 20)
print(p.x, p.y) # Output: 10 20

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمان استفاده

زمانی که به یک تاپل نیاز دارید اما می خواهید به عناصر به جای فهرست، با نام دسترسی داشته باشید. این به ویژه برای ذخیره مختصات، رکوردها یا تنظیماتی که در آن وضوح ضروری است مفید است.

2. deque (صف دو پایانه)

استفاده از مورد

به طور موثر آیتم ها را از هر دو انتهای لیست اضافه و باز کنید.

مثال

from collections import deque

d = deque([1, 2, 3])
d.append(4)
d.appendleft(0)
print(d) # Output: deque([0, 1, 2, 3, 4])

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمان استفاده

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

3. Counter

استفاده از مورد

شمارش اشیاء قابل هش (به عنوان مثال، شمارش عناصر در یک لیست، کلمات در یک رشته، و غیره).

مثال

from collections import Counter

words = [‘apple’, ‘banana’, ‘apple’, ‘orange’, ‘banana’, ‘apple’] counter = Counter(words)
print(counter) # Output: Counter({‘apple’: 3, ‘banana’: 2, ‘orange’: 1})

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمان استفاده

هنگامی که شما نیاز به شمارش فراوانی عناصر در یک تکرار دارید، مانند شمارش کلمات در یک سند یا ردیابی وقوع رویداد در یک برنامه.

4. defaultdict

استفاده از مورد

ارائه یک مقدار پیش فرض برای کلید فرهنگ لغت که وجود ندارد.

مثال

from collections import defaultdict

d = defaultdict(int) # Default value is 0
d[‘a’] += 1
print(d[‘a’]) # Output: 1
print(d[‘b’]) # Output: 0 (no KeyError)

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمان استفاده

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

5. OrderedDict

استفاده از مورد

حفظ ترتیب آیتم ها در هنگام درج در فرهنگ لغت (قبل از پایتون 3.7، این امر ضروری بود زیرا دستورهای معمولی نظم را حفظ نمی کردند).

مثال

from collections import OrderedDict

od = OrderedDict()
od[‘a’] = 1
od[‘b’] = 2
od[‘c’] = 3
print(od) # Output: OrderedDict([(‘a’, 1), (‘b’, 2), (‘c’, 3)])

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمان استفاده

هنگامی که نیاز به حفظ ترتیب درج موارد دارید، مانند ایجاد حافظه پنهان (LRU) که ​​اخیراً استفاده شده است یا دنباله ای از عملیات در داده های خود را حفظ کنید.

6. ChainMap

استفاده از مورد

گروه‌بندی چندین فرهنگ لغت در یک نمای واحد برای جستجوی سریع.

مثال

from collections import ChainMap

dict1 = {‘a’: 1, ‘b’: 2}
dict2 = {‘b’: 3, ‘c’: 4}
cm = ChainMap(dict1, dict2)
print(cm[‘b’]) # Output: 2 (from dict1)

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمان استفاده

هنگامی که نیاز دارید چندین فرهنگ لغت را به طور همزمان جستجو کنید، به ویژه برای مدیریت زمینه های متعدد، مانند ترکیب دامنه های متغیر سراسری و محلی در یک نمای مفید است.

7. UserDict، UserList، و UserString

استفاده از مورد

فرهنگ لغت، فهرست یا رشته فرعی با قابلیت اضافی.

مثال

from collections import UserDict

class MyDict(UserDict):
def __setitem__(self, key, value):
if key in self.data:
raise KeyError(f”{key} already exists.”)
super().__setitem__(key, value)

d = MyDict()
d[‘a’] = 1
# d[‘a’] = 2 # This will raise a KeyError

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمان استفاده

زمانی که به رفتار سفارشی از انواع داخلی مانند دیکشنری ها، لیست ها یا رشته ها نیاز دارید اما همچنان می خواهید بسیاری از عملکرد اصلی را حفظ کنید. این برای افزودن اعتبار یا اصلاح نحوه رفتار این انواع در یک زمینه خاص مفید است.

نتیجه گیری

این collections ماژول در پایتون ابزارهای قدرتمند و انعطاف پذیری را ارائه می دهد که انواع کانتینرهای داخلی را گسترش می دهد و در بسیاری از سناریوها امکان کد کارآمدتر و قابل خواندن را فراهم می کند. خواه در حال شمارش اشیاء، حفظ نظم، یا ایجاد ساختارهای داده سفارشی، دانستن زمان و نحوه استفاده collections می تواند به طور قابل توجهی جعبه ابزار برنامه نویسی پایتون شما را بهبود بخشد.

برای اطلاعات دقیق تر در مورد هر یک از این نوع کانتینر، اسناد پایتون را بررسی کنید و آنها را در پروژه های خود امتحان کنید تا ببینید چگونه می توانند کد شما را تمیزتر و کارآمدتر کنند!

در صورت تمایل نظرات خود را به اشتراک بگذارید یا موارد استفاده دیگری را برای آن اضافه کنید collections ماژول در نظرات!

مقدمه

هنگام کار با پایتون، کانتینرهای استاندارد مانند لیست ها، دیکشنری ها، تاپل ها و مجموعه ها انعطاف پذیری و سهولت استفاده را برای اکثر وظایف فراهم می کنند. با این حال، برای سناریوهای تخصصی تر، پایتون collections ماژول انواع داده کانتینر بسیار بهینه شده را ارائه می دهد. این پست در مورد رایج ترین موارد استفاده از آن توضیح می دهد collections ماژول، با مثال ها و راهنمایی در مورد زمان استفاده از هر یک کامل می شود.

1. namedtuple

استفاده از مورد

ایجاد اشیاء سبک وزن و تغییرناپذیر شبیه به تاپل، اما با فیلدهای نامگذاری شده برای خوانایی و قابلیت استفاده بهتر.

مثال

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(10, 20)
print(p.x, p.y)  # Output: 10 20
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمان استفاده

زمانی که به یک تاپل نیاز دارید اما می خواهید به عناصر به جای فهرست، با نام دسترسی داشته باشید. این به ویژه برای ذخیره مختصات، رکوردها یا تنظیماتی که در آن وضوح ضروری است مفید است.


2. deque (صف دو پایانه)

استفاده از مورد

به طور موثر آیتم ها را از هر دو انتهای لیست اضافه و باز کنید.

مثال

from collections import deque

d = deque([1, 2, 3])
d.append(4)
d.appendleft(0)
print(d)  # Output: deque([0, 1, 2, 3, 4])
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمان استفاده

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


3. Counter

استفاده از مورد

شمارش اشیاء قابل هش (به عنوان مثال، شمارش عناصر در یک لیست، کلمات در یک رشته، و غیره).

مثال

from collections import Counter

words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple']
counter = Counter(words)
print(counter)  # Output: Counter({'apple': 3, 'banana': 2, 'orange': 1})
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمان استفاده

هنگامی که شما نیاز به شمارش فراوانی عناصر در یک تکرار دارید، مانند شمارش کلمات در یک سند یا ردیابی وقوع رویداد در یک برنامه.


4. defaultdict

استفاده از مورد

ارائه یک مقدار پیش فرض برای کلید فرهنگ لغت که وجود ندارد.

مثال

from collections import defaultdict

d = defaultdict(int)  # Default value is 0
d['a'] += 1
print(d['a'])  # Output: 1
print(d['b'])  # Output: 0 (no KeyError)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمان استفاده

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


5. OrderedDict

استفاده از مورد

حفظ ترتیب آیتم ها در هنگام درج در فرهنگ لغت (قبل از پایتون 3.7، این امر ضروری بود زیرا دستورهای معمولی نظم را حفظ نمی کردند).

مثال

from collections import OrderedDict

od = OrderedDict()
od['a'] = 1
od['b'] = 2
od['c'] = 3
print(od)  # Output: OrderedDict([('a', 1), ('b', 2), ('c', 3)])
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمان استفاده

هنگامی که نیاز به حفظ ترتیب درج موارد دارید، مانند ایجاد حافظه پنهان (LRU) که ​​اخیراً استفاده شده است یا دنباله ای از عملیات در داده های خود را حفظ کنید.


6. ChainMap

استفاده از مورد

گروه‌بندی چندین فرهنگ لغت در یک نمای واحد برای جستجوی سریع.

مثال

from collections import ChainMap

dict1 = {'a': 1, 'b': 2}
dict2 = {'b': 3, 'c': 4}
cm = ChainMap(dict1, dict2)
print(cm['b'])  # Output: 2 (from dict1)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمان استفاده

هنگامی که نیاز دارید چندین فرهنگ لغت را به طور همزمان جستجو کنید، به ویژه برای مدیریت زمینه های متعدد، مانند ترکیب دامنه های متغیر سراسری و محلی در یک نمای مفید است.


7. UserDict، UserList، و UserString

استفاده از مورد

فرهنگ لغت، فهرست یا رشته فرعی با قابلیت اضافی.

مثال

from collections import UserDict

class MyDict(UserDict):
    def __setitem__(self, key, value):
        if key in self.data:
            raise KeyError(f"{key} already exists.")
        super().__setitem__(key, value)

d = MyDict()
d['a'] = 1
# d['a'] = 2  # This will raise a KeyError
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

زمان استفاده

زمانی که به رفتار سفارشی از انواع داخلی مانند دیکشنری ها، لیست ها یا رشته ها نیاز دارید اما همچنان می خواهید بسیاری از عملکرد اصلی را حفظ کنید. این برای افزودن اعتبار یا اصلاح نحوه رفتار این انواع در یک زمینه خاص مفید است.


نتیجه گیری

این collections ماژول در پایتون ابزارهای قدرتمند و انعطاف پذیری را ارائه می دهد که انواع کانتینرهای داخلی را گسترش می دهد و در بسیاری از سناریوها امکان کد کارآمدتر و قابل خواندن را فراهم می کند. خواه در حال شمارش اشیاء، حفظ نظم، یا ایجاد ساختارهای داده سفارشی، دانستن زمان و نحوه استفاده collections می تواند به طور قابل توجهی جعبه ابزار برنامه نویسی پایتون شما را بهبود بخشد.

برای اطلاعات دقیق تر در مورد هر یک از این نوع کانتینر، اسناد پایتون را بررسی کنید و آنها را در پروژه های خود امتحان کنید تا ببینید چگونه می توانند کد شما را تمیزتر و کارآمدتر کنند!


در صورت تمایل نظرات خود را به اشتراک بگذارید یا موارد استفاده دیگری را برای آن اضافه کنید collections ماژول در نظرات!

نوشته های مشابه

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

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

دکمه بازگشت به بالا