itertools
Допустим, мы хотим получить какой то конечный список элементов из бесконечного генератора. В модуле itertools есть удобная функция islice, позволяющая осуществить срез генератора fib.
#itertools
Допустим, мы хотим получить какой то конечный список элементов из бесконечного генератора. В модуле itertools есть удобная функция islice, позволяющая осуществить срез генератора fib.
from itertools import islice
def fib():
a, b = 0, 1
while True:
yield b
a, b = b, a + b
…
In : list(islice(fib(), 6))
Out: [1, 1, 2, 3, 5, 8]
#itertools
reduce
Продолжая тему itertools. Например, нужно написать функцию, которая принимает список чисел и перемножает их. То есть [1,2,3,4,5,6] даст 1*2*3*4*5*6.
📌Способ 1.
📌Способ 2.
📌Способ 3.
#tips #itertools #reduce
Продолжая тему itertools. Например, нужно написать функцию, которая принимает список чисел и перемножает их. То есть [1,2,3,4,5,6] даст 1*2*3*4*5*6.
📌Способ 1.
from functools import reduce
In : reduce(lambda x, y: x*y, [1, 2, 3, 4, 5, 6])
Out: 720
📌Способ 2.
import operator
import functools
In : functools.reduce(operator.mul, [1, 2, 3, 4, 5, 6], 1)
Out: 720
📌Способ 3.
import numpy as np
In : np.prod(np.array([1, 2, 3, 4, 5, 6]))
Out: 720
#tips #itertools #reduce
Комбинация значений
Мы уже кратко касались некоторых полезных функций в itertools. Теперь поговорим о функциях-итераторах, позволяющих комбинировать различные значения, меняя местами их составляющие. К их числу относятся такие методы как:
📌combinations;
📌combinations_with_replacement;
📌permutations;
📌product.
combinations
Первая функция по комбинированию отдельных элементов последовательности принимает два аргумента. Первый позволяет задать определенный объект, а второй – количество значений, которые будут присутствовать в каждом новом отрезке. В данном примере демонстрируется работа функции combinations библиотеки itertools при создании списка.
Как видно из кода, метод получает строку DOG, которая впоследствии раскладывается на отдельные символы. Далее происходит группировка по 2 буквы так, чтобы каждая новая выборка отличалась от всех существующих. Функция print выводит полученный список data на экран, отображая все сформированные пары символов D, O, G.
combinations_with_replacement
Более продвинутая вариация предыдущего итератора предоставляет программе возможность делать выборку из отдельных элементов с учетом их порядка. В следующем образце кода показано использование combinations_with_replacement с уже известными аргументами.
В результате работы программы, на экране отобразилось несколько групп элементов, не повторяющих порядок друг друга. При этом вполне могут использоваться одинаковые объекты, если их общее расположение не совпадает с предыдущими выборками.
permutations
Работа функции permutations модуля itertools в Python похожа на комбинацию со сменой порядка. Однако в ней не допускается размещение идентичных элементов в одной группе. Ниже приведен код, демонстрирующий поведение и результат выполнения этого метода в цикле for.
На выходе программа отображает несколько пар значений, так как в качестве второго аргумента функция получила 2. Важно заметить, что каждая новая выборка отличается от всех предыдущих только порядком, а общая последовательность может включать в себя группы, состоящие из одних и тех же значений, просто сменивших расположение.
product
Последний из комбинационных итераторов получает в качестве параметра массив данных, состоящий из нескольких групп значений. Функция product библиотеки itertools в Python 3 позволяет получить из введенной последовательности чисел или символов новую совокупность групп во всех возможных вариациях. Следующий пример показывает исполнение этого метода.
Таким образом, получается новая последовательность data, вмещающая в себя все возможные комбинации значений, полученных из начального списка.
#itertools #combinations
Мы уже кратко касались некоторых полезных функций в itertools. Теперь поговорим о функциях-итераторах, позволяющих комбинировать различные значения, меняя местами их составляющие. К их числу относятся такие методы как:
📌combinations;
📌combinations_with_replacement;
📌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.
combinations_with_replacement
Более продвинутая вариация предыдущего итератора предоставляет программе возможность делать выборку из отдельных элементов с учетом их порядка. В следующем образце кода показано использование combinations_with_replacement с уже известными аргументами.
from itertools import combinations_with_replacement
for i in combinations_with_replacement('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