آشنایی با ماژول itertools
ماژول itertools یک کتابخانه استاندارد است که شامل چندین توابع است که در برنامه نویسی کاربردی مفید هستند. یک نوع عملکردی که تولید می کند، تکرار کننده های بی نهایت است. شمارش تابع بطور بی نهایت از یک مقدار محاسبه می شود. چرخه تابع بی نهایت از طریق یک تکرار (به عنوان مثال یک لیست یا رشته) تکرار می شود. تابع تکرار را، به صورت بی نهایت و یا تعداد مشخصی از دفعات تکرار می کند. مثال:
from itertools import count
for i in count(3):
print(i)
if i >=11:
break
خروجی:
>>>
3
4
5
6
7
8
9
10
11
>>>
عملکردهای زیادی در itertools ها وجود دارد که بر روی آن کار می کنند،همچون map و filter. بعضی مثالها: takewhile - موارد را از یک تکرار طول می گیرد در حالی که یک تابع پیش بینی شده True می شود؛ Chain - چند iterable را با هم ترکیب و یک بزرگترش را می سازد. accumulate - یک مقدار مجموع از تمام ارزش های در حال اجرا باز می گرداند.
from itertools import accumulate, takewhile
nums = list(accumulate(range(8)))
print(nums)
print(list(takewhile(lambda x: x<= 6, nums)))
خروجی:
>>>
[0, 1, 3, 6, 10, 15, 21, 28]
[0, 1, 3, 6]
>>>
همچنین توابع ترکیبی چندگانه در intertool وجود دارد، مانند محصول و جایگزینی. اینها هنگامی استفاده می شود که شما می خواهید یک کار را با تمام ترکیبات ممکن از برخی موارد انجام دهید. مثال:
from itertools import product, permutations
letters = ("A", "B")
print(list(product(letters, range(2))))
print(list(permutations(letters)))
خروجی:
>>>
[('A', 0), ('A', 1), ('B', 0), ('B', 1)]
[('A', 'B'), ('B', 'A')]
>>>