🔶 ماژول itertools توابعی را در اختیار قرار میدهد که به شما امکان ایجاد ایتریتورهای مختلف و کارهایی را که معمولا با استفاده از حلقههای while و for انجام میشوند، به راحتی و با کمترین کد ممکن را میدهد.
🔷 این ماژول همچنین کلاسهایی دارد که به شما امکان میدهد دو یا چند ایتریتور را ترکیب یا فیلتر کنید، ترتیب عناصر را تغییر دهید و بسیاری از عملیاتهای دیگر را بر روی ایتریتورها انجام دهید.
در کل، Itertools یک ابزار بسیار کارآمد و پرکاربرد است که به شما کمک میکند تا کد خود را بهینهتر کنید و در نتیجه عملکرد آن را بهبود بخشید.
🔸 در ادامه، به توضیح هر یک از اجزای ماژول itertools میپردازیم.
#itertools #iterable #iterator #Module
✍🏻 *ژنرال*
💎 Channel: @DevelopixPython
🔷 این ماژول همچنین کلاسهایی دارد که به شما امکان میدهد دو یا چند ایتریتور را ترکیب یا فیلتر کنید، ترتیب عناصر را تغییر دهید و بسیاری از عملیاتهای دیگر را بر روی ایتریتورها انجام دهید.
در کل، Itertools یک ابزار بسیار کارآمد و پرکاربرد است که به شما کمک میکند تا کد خود را بهینهتر کنید و در نتیجه عملکرد آن را بهبود بخشید.
🔸 در ادامه، به توضیح هر یک از اجزای ماژول itertools میپردازیم.
#itertools #iterable #iterator #Module
✍🏻 *ژنرال*
💎 Channel: @DevelopixPython
👍4🔥3
🔸 توضیح اجزای ماژول itertools
🔹 پارت یک
🔘 itertools.count(start, step)
🔸 کلاس count یک شمارنده ایجاد می کند که به طور پیشفرض از عدد صفر شروع می کند و به طور پیوسته به بی نهایت ادامه پیدا می کند.
🔹این کلاس در پایتون دو پارامتر اختیاری به نامهای start و step دارد. پارامتر start مشخص میکند از کدام عدد باید شروع به تولید دنباله کنیم و پارامتر step تعداد فاصلههای بین اعداد را تعیین میکند.
💡مثال
🔸 کلاس cycle یک iterator برای تکرار یک iterable به صورت بینهایت ایجاد میکند.
🔹در پایتون، iterable ها نمیتوانند تکرارپذیر باشند و برای دوباره استفاده از آنها، باید iterable ها را مجدداً تعریف کرد. اما با استفاده از کلاس cycle میتوانید به سادگی این محدودیت را نادیده بگیرید و iterable را به صورت یک حلقه نامتناهی تکرار کنید.
💡مثال
🔸کلاس chain دو یا چند iterable را به عنوان ورودی میگیرد و آنها را به صورت پشت سر هم در یک iterator واحد قرار میدهد.
💡مثال
✍🏻 *ژنرال*
💎 Channel: @DevelopixPython
🔹 پارت یک
🔘 itertools.count(start, step)
🔸 کلاس count یک شمارنده ایجاد می کند که به طور پیشفرض از عدد صفر شروع می کند و به طور پیوسته به بی نهایت ادامه پیدا می کند.
🔹این کلاس در پایتون دو پارامتر اختیاری به نامهای start و step دارد. پارامتر start مشخص میکند از کدام عدد باید شروع به تولید دنباله کنیم و پارامتر step تعداد فاصلههای بین اعداد را تعیین میکند.
💡مثال
counter = itertools.count(30, 10)
print(next(counter)) # 30
print(next(counter)) # 40
print(next(counter)) # 50
🔘 itertools.cycle(iterable)🔸 کلاس cycle یک iterator برای تکرار یک iterable به صورت بینهایت ایجاد میکند.
🔹در پایتون، iterable ها نمیتوانند تکرارپذیر باشند و برای دوباره استفاده از آنها، باید iterable ها را مجدداً تعریف کرد. اما با استفاده از کلاس cycle میتوانید به سادگی این محدودیت را نادیده بگیرید و iterable را به صورت یک حلقه نامتناهی تکرار کنید.
💡مثال
cycle = itertools.cycle([1, 2])
print(next(cycle)) # 1
print(next(cycle)) # 2
print(next(cycle)) # 1
🔘 itertools.chain(*iterables)🔸کلاس chain دو یا چند iterable را به عنوان ورودی میگیرد و آنها را به صورت پشت سر هم در یک iterator واحد قرار میدهد.
💡مثال
iterator = itertools.chain([1, 2, 3], [4, 5, 6])
for item in iterator:
print(item) # 1, 2, ..., 6
#itertools #iterable #iterator #Module✍🏻 *ژنرال*
💎 Channel: @DevelopixPython
👍3🔥2
🔸 توضیح اجزای ماژول itertools
🔹 پارت دو
🔸 کلاس repeat یک شیء و یک تعداد بار تکرار را به عنوان ورودی میگیرد و تکرار این مقدار را به تعداد مشخص شده تولید میکند.
🔹اگر به عنوان پارامتر times مقداری داده نشود، شیء داده شده برای بینهایت بار تکرار خواهد شد.
💡مثال
🔸کلاس compress یک iterable معمولی و یک iterable از مقادیر بولین با طول برابر (با تعداد مقادیر iterable اولیه) را به عنوان ورودی میگیرد و فقط مقادیری را که در مقابل هر مقدار بولینی که در ورودی داده شده است True هستند، در یک iterator تولید میکند.
💡مثال
🔸کلاس filterfalse یک iterator و یک تابع پذیرنده گرفته و همانند تابع filter عمل می کند، با این تفاوت که در جایگاه شرط منفی تابع پذیرنده قرار میگیرد.
💡مثال
✍🏻 *ژنرال*
💎 Channel: @DevelopixPython
🔹 پارت دو
🔸 کلاس repeat یک شیء و یک تعداد بار تکرار را به عنوان ورودی میگیرد و تکرار این مقدار را به تعداد مشخص شده تولید میکند.
🔹اگر به عنوان پارامتر times مقداری داده نشود، شیء داده شده برای بینهایت بار تکرار خواهد شد.
💡مثال
iterator = itertools.repeat("AnyObject", 2)
for item in iterator:
print(item) # AnyObject, AnyObject
🔘 itertools.compress(data, selectors)🔸کلاس compress یک iterable معمولی و یک iterable از مقادیر بولین با طول برابر (با تعداد مقادیر iterable اولیه) را به عنوان ورودی میگیرد و فقط مقادیری را که در مقابل هر مقدار بولینی که در ورودی داده شده است True هستند، در یک iterator تولید میکند.
💡مثال
values = ("A", "B", "C")
bools = (True, False, True)
iterator = itertools.compress(values, bools)
for item in iterator:
print(item) # A, C
🔘 itertools.filterfalse(predicate, iterable)🔸کلاس filterfalse یک iterator و یک تابع پذیرنده گرفته و همانند تابع filter عمل می کند، با این تفاوت که در جایگاه شرط منفی تابع پذیرنده قرار میگیرد.
💡مثال
iterator = itertools.filterfalse(
lambda n: n % 2 == 0,
[1, 2, 3, 4, 5]
)
for item in iterator:
print(item) # 1, 3, 5
#itertools #iterable #iterator #Module✍🏻 *ژنرال*
💎 Channel: @DevelopixPython
👍2🔥2