Комбинация значений
Мы уже кратко касались некоторых полезных функций в itertools. Теперь поговорим о функциях-итераторах, позволяющих комбинировать различные значения, меняя местами их составляющие. К их числу относятся такие методы как:
📌combinations;
📌combinationswithreplacement;
📌permutations;
📌product.
combinations
Первая функция по комбинированию отдельных элементов последовательности принимает два аргумента. Первый позволяет задать определенный объект, а второй – количество значений, которые будут присутствовать в каждом новом отрезке. В данном примере демонстрируется работа функции combinations библиотеки itertools при создании списка.
from itertools import combinations
data = list(combinations('DOG', 2))
print(data)
# Output: [('D', 'O'), ('D', 'G'), ('O', 'G')]
Как видно из кода, метод получает строку DOG, которая впоследствии раскладывается на отдельные символы. Далее происходит группировка по 2 буквы так, чтобы каждая новая выборка отличалась от всех существующих. Функция print выводит полученный список data на экран, отображая все сформированные пары символов D, O, G.
combinationswithreplacement
Более продвинутая вариация предыдущего итератора предоставляет программе возможность делать выборку из отдельных элементов с учетом их порядка. В следующем образце кода показано использование combinationswithreplacement с уже известными аргументами.
from itertools import combinationswithreplacement
for i in combinationswithreplacement('DOG', 2):
print(''.join(i))
# Output:
DD
DO
DG
OO
OG
GG
В результате работы программы, на экране отобразилось несколько групп элементов, не повторяющих порядок друг друга. При этом вполне могут использоваться одинаковые объекты, если их общее расположение не совпадает с предыдущими выборками.
permutations
Работа функции permutations модуля itertools в Python похожа на комбинацию со сменой порядка. Однако в ней не допускается размещение идентичных элементов в одной группе. Ниже приведен код, демонстрирующий поведение и результат выполнения этого метода в цикле for.
from itertools import permutations
for i in permutations('DOG', 2):
print(''.join(i))
# Output:
DO
DG
OD
OG
GD
GO
На выходе программа отображает несколько пар значений, так как в качестве второго аргумента функция получила 2. Важно заметить, что каждая новая выборка отличается от всех предыдущих только порядком, а общая последовательность может включать в себя группы, состоящие из одних и тех же значений, просто сменивших расположение.
product
Последний из комбинационных итераторов получает в качестве параметра массив данных, состоящий из нескольких групп значений. Функция product библиотеки itertools в Python 3 позволяет получить из введенной последовательности чисел или символов новую совокупность групп во всех возможных вариациях. Следующий пример показывает исполнение этого метода.
from itertools import product
data = list(product((0, 1), (2, 3)))
print(data)
# Output: [(0, 2), (0, 3), (1, 2), (1, 3)]
Таким образом, получается новая последовательность data, вмещающая в себя все возможные комбинации значений, полученных из начального списка.
#itertools #combinations