کتابخانه های پایتون «Python Libraries» ابزارهای قدرتمند و مفیدی هستند که به برنامهنویسان این امکان را میدهند تا وظایف مختلف را به راحتی و با کارایی بالا انجام دهند. پایتون به دلیل سادگی و قابلیتهای فراوان خود، به یکی از محبوبترین زبانهای برنامهنویسی تبدیل شده است. بخشی از این محبوبیت به دلیل کتابخانههای گستردهای «Extensive Libraries» است که برای انجام وظایف مختلف مانند پردازش دادهها «Data Processing»، مدیریت فایلها «File Management»، انجام محاسبات پیچیده، توسعه وب «Web Development» و غیره وجود دارد.
مقدمه
کتابخانه های پایتون مانند مجموعهای از توابع «Functions»، کلاسها و ابزارهای آماده هستند که میتوانند به سرعت و به آسانی به برنامههای شما افزوده شوند. به جای نوشتن تکه کدهای پیچیده از صفر، میتوانید از کتابخانه های پایتون برای انجام وظایف رایج استفاده کنید و در زمان و تلاش خود صرفهجویی کنید. کتابخانه های پایتون موجود در ماژول Collections پایتون یکی از ابزارهای مفید برای کار با دادهها «Datas» و دیکشنریها «Dictionary» هستند. کتابخانه های پایتون امکاناتی مانند شمارش عناصر «Counting Elements»، حفظ ترتیب درج کلیدها و ایجاد دیکشنریهایی با مقادیر پیشفرض را فراهم میکنند که میتواند فرآیندهای برنامهنویسی را سادهتر و سریعتر کند.
کتابخانه های پایتون چیست؟
کتابخانه های پایتون به طور کلی است که ابزارها و قابلیتهای مختلفی را برای برنامهنویسان فراهم میکنند. کتابخانه های پایتون به مجموعهای از ماژولها، توابع و کلاسها گفته میشود که برای انجام وظایف خاصی در برنامهنویسی طراحی شدهاند. برای نمونه، کتابخانه های پایتون محبوب و کاربردی وجود دارد که میتوانند برای نیازهای مختلف استفاده شوند. برخی از کتابخانه های پایتون عبارتند از:
- NumPy: برای محاسبات علمی و کار با آرایهها و دادههای عددی.
- Pandas: برای تحلیل دادهها و کار با دادههای جدولی.
- Matplotlib: برای ترسیم نمودارها و گرافها.
- Requests: برای ارسال درخواستهای HTTP و کار با وب.
- Flask و Django: برای توسعه برنامههای وب.
- TensorFlow و PyTorch: برای یادگیری ماشین و پردازش دادههای پیچیده.
کتابخانه های پایتون به طور گسترده در دنیای برنامهنویسی پایتون استفاده میشوند و به توسعهدهندگان این امکان را میدهند که به راحتی پروژههای خود را توسعه دهند.
کتابخانه برای پیاده سازی آرایه در پایتون
آرایهها در پایتون میتوانند با وارد کردن ماژول array ایجاد شوند. تابع array(data_type, value_list) برای ایجاد یک آرایه با نوع داده و لیست مقادیر مشخصشده در آرگومانهای خود استفاده میشود.
کتابخانه برای پیاده سازی آرایه در پایتون
کتابخانه Array در پایتون برای پیادهسازی آرایهها استفاده میشود.
ماژول «Array» در پایتون چیست؟
ماژول آرایه در پایتون نوعی شی را تعریف میکند که میتواند آرایهای از مقادیر پایه را بهصورت فشرده نشان دهد، مانند کاراکترها، اعداد صحیح «Integer Numbers» و اعداد اعشاری «Decimal Numbers».
متدهای مهم در کتابخانه آرایه
- ()array.itemsize: اندازه هر آیتم در آرایه را بر حسب بایت برمیگرداند.
- ()array.buffer_info: آدرس حافظه و تعداد عناصر آرایه را برمیگرداند.
- array.count(x): تعداد وقوع یک مقدار خاص در آرایه را برمیگرداند.
- array.extend(iterable): یک iterable را به آرایه اضافه میکند.
ماژول deque در پایتون چیست؟
در پایتون، ماژول Collections یک کلاس قدرتمند به نام Deque ارائه میدهد که مخفف «Double-Ended Queue» (صف دو طرفه) است.
اگرچه این ماژول بهطور خاص بهعنوان «لیست دوطرفه پیوندی» نامگذاری نشده است، اما بهطور داخلی از ساختار لیست دوطرفه پیوندی استفاده میکند تا عملیات درج و حذف را در هر دو انتهای صف بهصورت کارآمد انجام دهد.
ویژگی های کلیدی deque
- عملکرد بالا در عملیات Append و Pop در هر دو انتها.
- مناسب برای پیادهسازی صفها «Queues» و پشتهها «Stacks».
- انعطافپذیری برای مدیریت دادهها به صورت پویا.
متدهای مهم در کتابخانه deque
- متد append(ele): عنصر ele را به سمت راست صف اضافه میکند.
- متد appendleft(ele): عنصر ele را به سمت چپ صف اضافه میکند.
- متد ()clear: تمام عناصر صف را حذف میکند و طول صف را به ۰ میرساند.
- متد ()copy: یک کپی سطحی از صف ایجاد میکند.
- متد count(ele): تعداد عناصری که برابر با ele هستند را شمارش میکند.
- متد ()extend: سمت راست صف را با افزودن عناصر از یک iterable گسترش میدهد.
- متد ()extendleft: سمت چپ صف را با افزودن عناصر از یک iterable گسترش میدهد.
- متد ()index: موقعیت اولین تطابق از عنصر x را در صف برمیگرداند.
- متد ()insert: عنصر x را در موقعیت i در صف وارد میکند.
- متد ()pop: یک عنصر را از سمت راست صف حذف کرده و برمیگرداند.
- متد ()popleft: یک عنصر را از سمت چپ صف حذف کرده و برمیگرداند.
- متد ()remove: اولین وقوع مقدار مشخصشده را از صف حذف میکند.
- متد ()reverse: ترتیب عناصر صف را معکوس میکند.
- متد ()rotate: صف را به تعداد n گام به سمت راست میچرخاند.
مثال برای استفاده از کتابخانه deque در پایتون
from collections import deque # Creating a deque my_queue = deque() # Adding elements to the queue my_queue.append(1) # Adds to the right end my_queue.appendleft(2) # Adds to the left end # Removing elements from the queue element = my_queue.pop() # Removes and returns from the right end element = my_queue.popleft() # Removes and returns from the left end # Other methods available in deque include: extend, extendleft, rotate, etc.
کتابخانه برای پیاده سازی صف در پایتون
در صف، عناصر با عملیات Enqueue به انتها اضافه میشوند و با عملیات Dequeue از ابتدا حذف میشوند. این ساختار تضمین میکند که قدیمیترین عناصر ابتدا پردازش شوند، در حالی که عناصر جدید به انتهای صف اضافه میشوند.
کتابخانه برای پیاده سازی هش مپ در پایتون
برای پیادهسازی هشمپ «Hashmap» در پایتون، معمولا از دیکشنریها استفاده میشود که ساختاری مشابه هشمپ دارد و میتواند بهطور مؤثر کلیدها و مقادیر را ذخیره کند. دیکشنریها بهطور پیشفرض در پایتون برای ذخیره و جستجو بر اساس کلید طراحی شدهاند.
ماژول queue در پایتون چیست؟
کلاسهای مختلفی را برای پیادهسازی صفهای Multi-Producer و Multi-Consumer ارائه میدهد. این کلاسها بهویژه برای برنامهنویسی چندرشتهای طراحی شدهاند و برای ارتباط ایمن بین نخها «Threads» در برنامههای همزمان کاربرد دارند.
ماژول Queue شامل صفهایی است که عملیاتهایی مانند افزودن و حذف از ابتدا و انتهای صف را انجام میدهند و تضمین میکنند که دادهها بهطور ایمن بین نخها منتقل شوند. این صفها برای برنامههایی که به همزمانی نیاز دارند، بسیار مفید هستند.
متدهای مهم در کتابخانه Counter
ماژول Queue در پایتون روشهای مختلفی برای کار با صف «Queue» ارائه میدهد که برخی از متدهای کلیدی آن عبارتاند از:
- ()Queue.qsize: اندازه تقریبی صف را برمیگرداند.
- ()Queue.empty: اگر صف خالی باشد، مقدار True و در غیر این صورت مقدار False برمیگرداند.
- ()Queue.full: اگر صف پر باشد، مقدار True و در غیر این صورت مقدار False برمیگرداند.
- ()Queue.put: یک آیتم را به صف اضافه میکند.
- ()Queue.get: یک آیتم را از صف حذف کرده و برمیگرداند.
مثال استفاده از کتابخانه Queue در پایتون
from queue import Queue # Creating a queue my_queue = Queue() # Adding elements to the queue my_queue.put(1) my_queue.put(2) my_queue.put(3) # Removing elements from the queue # Removes and returns the first element added (FIFO) element = my_queue.get() print(element) # Checking if the queue is empty print(my_queue.empty()) # Getting the size of the queue print(my_queue.qsize()) # Other methods available in Queue include: empty, # qsize, full, task_done, join, etc.
خروجی:
۱ False ۲
کتابخانه برای پیاده سازی Hash Map در پایتون
یک Hash Map که به عنوان Hash Table نیز شناخته میشود، یک ساختار داده برای ذخیره جفتهای کلید-مقدار است. این ساختار داده عملیات درج، حذف و جستجوی بسیار کارآمدی را فراهم میکند. Hash Map با استفاده از یک تابع هش، کلیدها را به اندیسهایی در یک آرایه نگاشت میدهد.
ماژول Counter در پایتون
ماژول Counter در پایتون از کتابخانه Collections یک دیکشنری خاص است که برای شمارش اشیای قابل هش طراحی شده است. این ابزار برای شمارش تعداد تکرار عناصر در یک مجموعه (مثلاً لیست یا رشته) بسیار مفید است. کلاس Counter متدهایی برای شمارش عناصر به صورت مؤثر و انجام عملیاتهایی مانند جمع، تفریق، اشتراک و اتحاد شمارشها فراهم میکند.
روش های مهم در کتابخانه Counter
- ()Counter.elements: یک ایتراتور بر روی عناصر برمیگرداند که هر عنصر به اندازه تعداد دفعات تکرارش تکرار میشود. عناصر به طور دلخواه برگردانده میشوند.
- Counter.most_common([n]): یک لیست از n عنصر پر تکرارترین و تعداد آنها برمیگرداند، از پر تکرارترین تا کمتکرارترین. اگر n وارد نشود یا مقدار آن None باشد، تمام عناصر شمارش شده را برمیگرداند.
- Counter.subtract([iterable-or-mapping]): عناصر را از یک Iterable یا از یک دیکشنری کم میکند.
- ()Counter.total: مجموع شمارشها را محاسبه میکند.
- Counter.update([iterable-or-mapping]): عناصر را از یک Iterable شمارش کرده یا از یک دیکشنری به آن اضافه میکند.
- Counter.fromkeys(iterable, value): یک متد کلاس است که یک شیء جدید Counter از یک Iterable ایجاد کرده و شمارش هر عنصر را به مقدار مشخصی مقداردهی اولیه میکند.
مثال استفاده از کتابخانه Counter در پایتون
from collections import Counter # Create a Counter object from a list my_list = ['apple', 'banana', 'apple', 'orange', 'apple', 'banana'] my_counter = Counter(my_list) print(my_counter)
خروجی:
Counter({'apple': 3, 'banana': 2, 'orange': 1})
کتابخانه ChainMap در پایتون
کتابخانه ChainMap در پایتون یک کلاس است که در ماژول Collections قرار دارد و این امکان را فراهم میکند تا چندین دیکشنری را به هم متصل کرده و یک نمای واحد از آنها ایجاد کنید. با استفاده از ChainMap میتوانید چندین دیکشنری را به گونهای جستجو کنید که گویی فقط یک دیکشنری وجود دارد.
ویژگیهای ChainMap
- اتصال دیکشنریها: چندین دیکشنری میتوانند به صورت زنجیرهای به هم متصل شوند.
- جستجو در دیکشنریها: زمانی که جستجو انجام میدهید، پایتون ابتدا دیکشنری اول را بررسی میکند و سپس به ترتیب دیکشنریهای بعدی را جستجو میکند تا زمانی که نتیجه پیدا شود.
- مدیریت چندین دیکشنری: مفید برای مواقعی که نیاز به مدیریت یا جستجو در چند دیکشنری دارید.
به طور کلی، ChainMap به شما این امکان را میدهد که چندین دیکشنری را مانند یک دیکشنری واحد مدیریت کنید.
# Python program to demonstrate ChainMap from collections import ChainMap d1 = {'a': 1, 'b': 2} d2 = {'c': 3, 'd': 4} d3 = {'e': 5, 'f': 6} # Defining the chainmap c = ChainMap(d1, d2, d3)
کتابخانه پیشفرض در پایتون چیست؟
کتابخانه Defaultdict در پایتون یک کلاس از ماژول Collections است که یک نوع دیکشنری خاص است. این دیکشنری به طور خودکار برای کلیدهایی که مقدارشان مشخص نشده، یک مقدار پیشفرض میسازد. به عبارت دیگر، وقتی به یک کلید غیرموجود دسترسی پیدا میکنید، به جای دریافت خطا، یک مقدار پیشفرض که شما تعیین کردهاید به آن اختصاص داده میشود.
برای مثال، اگر شما دیکشنریای داشته باشید که میخواهید برای هر کلید عدد صفر به طور پیشفرض در نظر گرفته شود، Defaultdict این کار را به طور خودکار انجام میدهد و نیاز به بررسی دستی برای وجود کلید نخواهید داشت.
from collections import defaultdict # Define a defaultdict with default value 0 my_defaultdict = defaultdict(int)
کتابخانه OrderedDict در پایتون
کتابخانه OrderedDict در پایتون یک زیرکلاس از دیکشنری است که در ماژول Collections قرار دارد. این دیکشنری مشابه دیکشنری داخلی پایتون است، اما تفاوت اصلی آن این است که ترتیب درج کلیدها را حفظ میکند.
from collections import OrderedDict my_ordered_dict = OrderedDict()
کتابخانه برای پیاده سازی Heap در پایتون
Heap یک ساختار داده تخصصی مبتنی بر درخت است که ویژگی Heap را برآورده می کند. Heap ها معمولا به عنوان درخت های دوتایی، به طور خاص Min-heaps باینری یا Max-heaps باینری پیاده سازی می شوند.
کتابخانه برای پیاده سازی Hash Map در پایتون
کتابخانه Heapq در پایتون برای پیاده سازی Queue در پایتون استفاده می شود.
ماژول heapq در پایتون چیست؟
ماژول Heapq در پایتون مجموعهای از الگوریتمهای مبتنی بر هیپ را ارائه میکند، بهویژه توابعی برای پیادهسازی هپها بهعنوان فهرستهای معمولی و اجرای کارآمد عملیات پشته. علیرغم اینکه Heapq نامگذاری شده است، یک کلاس ساختار داده پشته جداگانه ارائه نمی کند. در عوض، توابعی را برای دستکاری لیستهای پایتون معمولی به صورت پشته ارائه میکند.
روش های مهم در کتابخانه شمارنده
ماژول heapq در پایتون توابع را به جای روش هایی برای عملیات پشته ارائه می دهد. در اینجا توابع اصلی موجود در ماژول heapq آمده است:
- heapify (heap): این تابع یک لیست را در زمان خطی به پشته تبدیل می کند.
- heappush (heap, item): این تابع در حالی که خاصیت heap را حفظ می کند، آیتم را به پشته اضافه می کند. این مورد را در موقعیت مناسب در داخل پشته قرار می دهد.
- heappop (heap): این تابع کوچکترین عنصر را از پشته حذف و برمی گرداند.
- heappushpop (heap, item): آیتم را روی پشته هل می دهد و سپس پاپ می کند و کوچکترین عنصر را از پشته برمی گرداند.
- heapreplace (heap, item): این تابع ابتدا ظاهر می شود و قبل از فشار دادن آیتم جدید به پشته، کوچکترین عنصر را از پشته برمی گرداند.
- merge (iterables): این تابع چندین ورودی مرتب شده (تکرار) را در یک خروجی مرتب شده ادغام می کند.
- nlargest (n، iterable): این تابع n بزرگترین عنصر را از تکرار پذیر برمی گرداند که به ترتیب نزولی مرتب شده اند.
- nsmallest (n, iterable): این تابع n کوچکترین عنصر را از تکرارپذیر به ترتیب صعودی مرتب می کند.
مثالی برای استفاده از کتابخانه Heapq در پایتون
# importing "heapq" to implement heap queue import heapq # initializing list li = [5, 7, 9, 1, 3] # using heapify to convert list into heap heapq.heapify(li) # printing created heap print ("The created heap is : ",(list(li)))
خروجی:
The created heap is : [1, 3, 9, 7, 5]
بسته ای برای پیاده سازی درخت در پایتون
درخت یک ساختار داده سلسله مراتبی است که از گره هایی به هم متصل شده اند. این یک ساختار داده پرکاربرد در علوم کامپیوتر برای سازماندهی داده ها به شیوه ای سلسله مراتبی است.
بسته یا کتابخانه برای پیاده سازی درخت در پایتون
کتابخانه treelib در پایتون برای پیاده سازی Queue در پایتون استفاده می شود.
Treelib Module در پایتون چیست؟
این treelib از کتابخانه های پایتون است که قابلیت کار با ساختارهای درختی را فراهم می کند. این به شما اجازه می دهد تا ساختارهای داده درختی را به طور موثر ایجاد کنید، دستکاری کنید، پیمایش کنید و تجسم کنید.
روش های مهم در کتابخانه دو گانه
- create_node (tag, node_id=هیچکدام، والد=هیچکدام) : یک گره جدید با تگ مشخص شده و داده های اختیاری ایجاد می کند. به صورت اختیاری شناسه گره (node_id) و گره والد (والد) را مشخص می کند.
- remove_node (node_id) : گره را با شناسه مشخص شده از درخت حذف می کند.
- get_node (node_id) : گره را با شناسه مشخص شده از درخت بازیابی می کند.
- update_node (node_id, tag=none, data=none) : برچسب و/یا داده های گره را با شناسه مشخص شده به روز می کند.
- contain (node_id) : بررسی می کند که آیا درخت دارای گره ای با شناسه مشخص شده است یا خیر.
- parent (node_id) : شناسه گره والد گره را با شناسه مشخص شده برمی گرداند.
- children (node_id) : فهرستی از شناسه گره های فرزند گره را با شناسه مشخص شده برمی گرداند.
- depth (node_id) : عمق گره را با شناسه مشخص شده در درخت محاسبه می کند.
- size (node_id=None): اندازه زیردرخت ریشه دار در گره را با شناسه مشخص شده محاسبه می کند. اگر هیچ شناسه ای ارائه نشود، اندازه کل درخت را محاسبه می کند.
- height (node_id=None) : ارتفاع زیردرختی که در گره ریشه دارد با شناسه مشخص شده را محاسبه می کند. اگر هیچ شناسه ای ارائه نشود، ارتفاع کل درخت را محاسبه می کند.
- show (line_type=”ascii”): نمایش متنی درخت را چاپ می کند
مثالی برای استفاده از Bisect Library در پایتون
from treelib import Node, Tree # Create a new binary tree tree = Tree() # Add nodes to the tree tree.create_node("Root", "root") # Create the root node # Create a left child node tree.create_node("Left Child", "left", parent="root") # Create a right child node tree.create_node("Right Child", "right", parent="root") # Add more nodes to the left child # Create a left grandchild node tree.create_node("Left Grandchild", "left_grand", parent="left") # Create a right grandchild node tree.create_node("Right Grandchild", "right_grand", parent="left") # Print the tree structure print("Tree structure:") tree.show() # Traverse the tree (pre-order traversal) print("\nPre-order traversal:") for node in tree.all_nodes(): print(node.tag) # Visualize the tree tree.show(line_type="ascii-em") # Visualize the tree using Graphviz (requires Graphviz installed) # tree.show()
خروجی:
Baumstruktur: Wurzel ├── links │ ├── left_grand │ └── right_grand └── rechts Pre-Order-Traversierung: Wurzel links left_grand right_grand rechts Wurzel |-- links | |-- left_grand | +-- right_grand +-- rechts
کتابخانه ای برای پیاده سازی الگوریتم دو گانه در پایتون
الگوریتم دوتایی، که به عنوان جستجوی دودویی نیز شناخته می شود، تکنیکی است که برای یافتن کارآمد موقعیتی که یک عنصر باید در لیست مرتب شده برای حفظ ترتیب مرتب شده درج شود، استفاده می شود. نام آن از تابع bisect ارائه شده توسط ماژول bisect در پایتون گرفته شده است که این الگوریتم را پیاده سازی می کند.
کتابخانه برای پیاده سازی الگوریتم دو گانه در پایتون
کتابخانه bisect در پایتون برای پیاده سازی Queue در پایتون استفاده می شود.
bisect Module در پایتون چیست؟
ماژول bisect در پایتون توابعی را برای درج موثر عناصر در لیست های مرتب شده و یافتن نقاط درج برای عناصر جدید و در عین حال حفظ ترتیب مرتب شده ارائه می دهد. این به ویژه هنگام برخورد با مجموعه های مرتب شده و نیاز به حفظ نظم آنها به طور موثر مفید است.
روش های مهم در کتابخانه دو گانه
از آنجایی که ماژول bisect از روشهای اضافی پشتیبانی میکند، لطفا تمام روشها را در نکاتی که در آنجا توضیح داده شده است ذکر کنید
- bisect(list, num, beg, end): این تابع موقعیت را در لیست مرتب شده برمی گرداند.
- bisect.bisect_left()
- bisect.bisect_right()
- bisect.insort_left()
- bisect.insort_right()
- bisect.insort()
مثالی برای استفاده از Bisect Library در پایتون
import bisect # Sorted list sorted_list = [1, 3, 5, 7, 9] # Element to insert new_element = 6 # Find the insertion point using bisect_left insertion_point = bisect.bisect_left(sorted_list, new_element) # Insert the element into the sorted list sorted_list.insert(insertion_point, new_element) print("Sorted list after insertion:", sorted_list) print("New element inserted at index:", insertion_point)
خروجی:
Sortierte Liste nach dem Einfügen: [1, 3, 5, 6, 7, 9] Neues Element eingefügt am Index: 3
کتابخانه برای پیاده سازی Interval Tree در پایتون
درخت بازه یک ساختار داده ای است که برای ذخیره سازی و پرس و جوی کارآمد بازه ها یا محدوده ها استفاده می شود. این یک نوع درخت جستجوی دودویی است که به طور خاص برای رسیدگی موثر به پرس و جوهای فاصله ای طراحی شده است.
کتابخانه برای پیاده سازی الگوریتم دو گانه در پایتون
کتابخانه intervaltree در پایتون برای پیاده سازی Queue در پایتون استفاده می شود.
Intervaltree Module در پایتون چیست؟
کتابخانه intervaltree در پایتون یک ساختار داده ای است که برای ذخیره و پرس و جوی کارآمد بازه ها یا محدوده ها طراحی شده است. این یک پیادهسازی از درخت بازه، یک نوع درخت جستجوی دودویی بهینهسازی شده برای پرس و جوهای بازهای را فراهم میکند.
روش های مهم در کتابخانه intervaltree
ماژول intervaltree در پایتون چندین روش برای کار موثر با درختان فاصله ارائه می کند.
- add(interval): یک بازه به درخت فاصله اضافه می کند.
- remove(interval): فاصله ای را از درخت فاصله حذف می کند.
- search(begin): فواصلی را جستجو می کند که با محدوده مشخص شده با شروع و پایان همپوشانی دارند.
- overlap(begin): نام مستعار برای جستجو (). فواصل زمانی را جستجو می کند که با محدوده مشخص شده با شروع و پایان همپوشانی دارند.
- at(begin): جستجو برای فواصل حاوی نقطه مشخص شده شروع می شود. مجموعه ای از فواصل که حاوی نقطه هستند را برمی گرداند.
- ()clear: تمام فواصل درخت فاصله را پاک می کند و آن را خالی می کند.
- ()copy: یک کپی کم عمق از درخت بازه، شامل تمام فواصل ایجاد می کند.
- discard(interval): در صورت وجود بازه ای از درخت بازه، مشابه متد ()remove حذف می کند.
- ()Item: یک مولد را برمیگرداند که تمام بازههای ذخیره شده در درخت بازه را به دست میدهد.
- ()size: تعداد بازه های ذخیره شده در درخت فاصله را برمی گرداند.
- ()vala: اگر درخت بازه خالی باشد True را برمیگرداند، در غیر این صورت False را برمیگرداند.
مثالی برای استفاده از کتابخانه Intervaltree در پایتون
from intervaltree import IntervalTree, Interval # Create an interval tree tree = IntervalTree() # Add intervals to the tree tree.add(Interval(1, 5)) tree.add(Interval(3, 8)) tree.add(Interval(6, 10)) tree.add(Interval(12, 15)) # Query intervals that overlap with a given range query_range = (4, 7) result_intervals = tree.search(*query_range) print("Intervals that overlap with the query range:", result_intervals) # Iterate over the result intervals and print their start and end points print("Start and end points of the overlapping intervals:") for interval in result_intervals: print("Start:", interval.begin, "End:", interval.end)
خروجی:
Intervalle, die sich mit dem Abfragebereich überschneiden: {Intervall(1, 5), Intervall(3, 8), Intervall(6, 10)} Start- und Endpunkte der überlappenden Intervalle: Start: 1 Ende: 5 Start: 3 Ende: 8 Start: 6 Ende: 10
کتابخانه برای پیاده سازی Trie Tree در پایتون
Trie، همچنین به عنوان درخت پیشوند یا درخت دیجیتال شناخته می شود، یک ساختار داده درخت مانند است که برای ذخیره مجموعه پویا از رشته ها که در آن کلیدها معمولاً رشته هستند استفاده می شود. هر گره در یک Trie نشان دهنده یک کاراکتر واحد از یک رشته است و مسیر از ریشه به یک گره خاص نشان دهنده پیشوندی از یک یا چند رشته است.
کتابخانه برای پیاده سازی Trie در پایتون
کتابخانه trie در پایتون برای پیاده سازی Queue در پایتون استفاده می شود.
Intervaltree Module در پایتون چیست؟
کتابخانه intervaltree در پایتون یک ساختار داده ای است که برای ذخیره و پرس و جوی کارآمد بازه ها یا محدوده ها طراحی شده است. این یک پیادهسازی از درخت بازه، یک نوع درخت جستجوی دودویی بهینهسازی شده برای پرس و جوهای بازهای را فراهم میکند.
روش های مهم در کتابخانه intervaltree
- ()Trie : متد سازنده برای ایجاد یک شی Trie جدید.
- insert(str) -> None : یک کلمه را در آزمون وارد می کند.
- search(str) : یک کلمه را در آزمون جستجو می کند. اگر کلمه پیدا شود True را برمیگرداند، در غیر این صورت False.
- startswith(prefix: str): بررسی می کند که آیا هر کلمه ای در آزمون با پیشوند داده شده شروع می شود یا خیر. اگر کلمه ای با پیشوند شروع شود، درست است، در غیر این صورت False.
- delete(word: str): کلمه ای را از آزمون حذف می کند.
- words(prefix: str = ”): فهرستی از کلمات را در آزمایشی که با پیشوند داده شده شروع می شود، برمی گرداند.
مثالی برای استفاده از Trie Library در پایتون
from trie import Trie # Create a new Trie object trie = Trie() # Insert some words into the trie trie.insert("apple") trie.insert("banana") trie.insert("app") trie.insert("bat") trie.insert("ball") # Search for words in the trie print("Search Results:") print("Does 'apple' exist?", trie.search("apple")) # Output: True print("Does 'app' exist?", trie.search("app")) # Output: True print("Does 'orange' exist?", trie.search("orange")) # Output: False # Check if any word starts with a given prefix print("\nStartsWith Results:") print("Does any word start with 'ap'?", trie.startswith("ap")) # Output: True print("Does any word start with 'ora'?", trie.startswith("ora")) # Output: False # Get autocomplete suggestions for a given prefix print("\nAutocomplete Suggestions for 'ba':", trie.autocomplete("ba")) # Output: ['ball', 'banana', 'bat'] # Delete a word from the trie trie.delete("apple") print("\nAfter deleting 'apple':", trie.words()) # Output: ['app', 'ball', 'banana', 'bat'] # Count the total number of words in the trie print("\nTotal Number of Words:", trie.count_words()) # Output: 4 # Count the number of words with a given prefix print("Number of words with prefix 'ba':", trie.count_prefixes("ba")) # Output: 3
نتیجه گیری
کتابخانههای پایتون، به ویژه کتابخانههای موجود در ماژول collections، ابزارهای قدرتمند و انعطافپذیری را برای مدیریت دادهها و دیکشنریها در پایتون فراهم میکنند. این کتابخانهها به شما کمک میکنند تا کارهایی مانند شمارش عناصر، حفظ ترتیب درج کلیدها و مدیریت دیکشنریها با مقادیر پیشفرض را به روشی ساده و کارآمد انجام دهید. یکی از ابزارهای مهم در این ماژول، Counter است که برای شمارش تعداد تکرار عناصر در یک مجموعه به کار میرود. این ابزار به سادگی میتواند مشخص کند که هر عنصر چند بار در مجموعهای ظاهر شده است.
defaultdict نوعی دیکشنری است که برای کلیدهای غیرموجود به طور خودکار مقدار پیشفرض اختصاص میدهد. این قابلیت باعث میشود که نیازی به بررسی وجود کلید قبل از مقداردهی نباشد و کدها سادهتر و خواناتر شوند.
OrderedDict دیکشنریای است که ترتیب درج کلیدها را حفظ میکند. این ویژگی زمانی مفید است که نیاز به حفظ ترتیب ورود دادهها داشته باشید، مانند زمانی که دادهها باید به ترتیب خاصی پردازش شوند.
ChainMap ابزاری برای اتصال چندین دیکشنری به یکدیگر و جستجو در آنها به عنوان یک دیکشنری واحد است. این قابلیت به خصوص در مواقعی مفید است که دادهها در چند دیکشنری جداگانه قرار دارند، اما نیاز است که به عنوان یک مجموعه واحد با آنها کار شود.
کتابخانههای پایتون باعث سادهتر شدن فرآیندهای پیچیده در برنامهنویسی میشوند و قابلیتهای بیشتری برای مدیریت دادهها و افزایش کارایی کدهای پایتون به ارمغان میآورند.