راهنمای ماژول مجموعه 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
ماژول در نظرات!