TGViewer
Python RU Python RU @pro_python_code · 12.3K subscribers
Post #1072 2.24K
🖥 Руководство по модулю Python itertools

Что такое itertools?
Itertools  — это Python-модуль, который предоставляет набор функций для работы с итерируемыми объектами. Итерируемый объект — это любой объект, предоставляющий возможность пройти по своим элементам, например список, кортеж и словарь. Itertools позволяет выполнять стандартные операции с итерируемыми объектами, такие как фильтрация, группировка и объединение.

Модуль Itertools предоставляет несколько функций, позволяющих манипулировать итерируемыми объектами. Рассмотрим подробнее наиболее полезные функции itertools.

1. permutations(): эта функция возвращает все возможные перестановки итерируемого объекта с уникальным расположением элементов в итераторе.

Ввод:

import itertools

letters = ['a', 'b', 'c']
perms = itertools.permutations(letters)

for perm in perms:
print(perm)
Вывод:

('a', 'b', 'c')
('a', 'c', 'b')
('b', 'a', 'c')
('b', 'c', 'a')
('c', 'a', 'b')
('c', 'b', 'a')
2. combinations(): эта функция возвращает все возможные комбинации элементов в итерируемом объекте, не повторяя в итераторе ни одной из комбинаций. Если указан опциональный аргумент r, будут возвращены только комбинации длины r.

Ввод:

import itertools

numbers = [1, 2, 3, 4]
combs = itertools.combinations(numbers, 2)

for comb in combs:
print(comb)
Вывод:

(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)

3. product(): эта функция возвращает декартово произведение итерируемых объектов. Получаемый итератор содержит кортежи, каждый из которых формируется путем отбора по одному элементу из каждого итерируемого объекта. Если указан опциональный аргумент repeat, то входные итерируемые объекты повторяются указанное количество раз.

Ввод:

import itertools

colors = ['red', 'green', 'blue']
sizes = ['small', 'medium', 'large']
combos = itertools.product(colors, sizes)

for combo in combos:
print(combo)
Вывод:

('red', 'small')
('red', 'medium')
('red', 'large')
('green', 'small')
('green', 'medium')
('green', 'large')
('blue', 'small')
('blue', 'medium')
('blue', 'large')

4. groupby(): эта функция группирует элементы в конкретном итерируемом объекте на основе значения, возвращаемого функцией key. Получаемый в результате итератор содержит кортежи, в каждом из которых первый элемент — ключ группировки, а второй — итератор по элементам в группе.

Ввод:

import itertools

fruits = [{'name': 'apple', 'color': 'red'},
{'name': 'banana', 'color': 'yellow'},
{'name': 'orange', 'color': 'orange'},
{'name': 'pear', 'color': 'green'},
{'name': 'strawberry', 'color': 'red'}]

fruits.sort(key=lambda x: x['color'])

for color, group in itertools.groupby(fruits, lambda x: x['color']):
print(color)
for fruit in group:
print(fruit['name'])

Вывод:

green
pear
orange
orange
red
apple
strawberry
yellow
banana

5. chain(): эта функция объединяет указанные итерируемые объекты в один итерируемый объект. Она возвращает итератор, в котором последовательно выполняется перебор элементов каждого итерируемого объекта.

Ввод:

import itertools

colors = ['red', 'green', 'blue']
sizes = ['small', 'medium', 'large']

for item in itertools.chain(colors, sizes):
print(item)
Вывод:

red
green
blue
small
medium
large
6. count(): эта функция возвращает итератор, который производит бесконечную последовательность чисел, начиная с заданного начального значения и увеличивая на заданное значение шага.

Ввод:

import itertools

for i in itertools.count(5, 2):
print(i)
if i > 15:
break
Вывод:

5
7
9
11
13
15
17

7. cycle(): эта функция возвращает итератор, который производит элементы конкретного итерируемого объекта многократно и бесконечно.

Ввод:

import itertools

colors = ['red', 'green', 'blue']

for color in itertools.cycle(colors):
print(color)
Вывод:

red
green
blue
red
green
blue
red
...

8. dropwhile(): эта функция возвращает итератор, который производит элементы конкретного итерируемого объекта после того, как функция-предикат в первый раз вернет False.

📌Читать дальше

@pro_python_code
  • 👍 12
  • ❤ 4
  • 🔥 2
More from @pro_python_code
  1. Oct 4, 2026Hugging Face исследовали multi-harness RL: обучение с подкреплением сразу через Claude Cod…
  2. Oct 1, 2026DeepSeek Harness вышел на десктоп: плагины без терминала и задачи по расписанию DeepSeek в…
  3. Sep 30, 2026Пишем игру на Python: неоновая аркада с разбором кода и ИИ Pygame часто считают библиотеко…
  4. Sep 29, 2026photo post
  5. Sep 28, 2026photo post
  6. Sep 26, 2026🐧 Linux Cheat Sheet - шпаргалка по командам Linux Самая удобная шпаргалка по Linux и Bash…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →