Рубрики
Без рубрики

Как повторять генератор дважды

Эй, финансы! Пришло время для другого предмета Python, которая наверняка наверняка в вашей карьере разработчиков Python. Формирование проблем: Как повторить генератор дважды? Тогда мы рассмотрим три решения о том, как мы можем повторить дважды, или даже несколько раз, над генератором или итератором. Во-первых, мы должны понимать … Как повторить для генератора дважды Подробнее »

Автор оригинала: Amber Mercado.

Эй, финансы! Пришло время для другого предмета Python, которая наверняка наверняка в вашей карьере разработчиков Python.

Проблема разработки: Как повторять генератор дважды?

Тогда мы посмотрю на три решения На том, как мы можем повторить дважды, или даже несколько раз, над генератором или итератором.

Во-первых, мы должны понимать, что генератор в Python – это специальная рутина, которая может быть использована для управления итерационным поведением петли.

В этой статье мы собираемся сосредоточиться на Itertool Модуль и различные способы его используются в реальном мире. Этот модуль предустановлен в Python, поэтому нам нужно только импортировать его. Мы будем внимательно посмотреть на iTertools.repeat (), Itertool.count и Itertools.product. Каждый из них генерирует разные способы, которые мы можем перебраться через список, кортеж или словарь.

Метод 1.

В этом первом примере мы собираемся использовать Itertools.repeat () И как он используется в итерации. Itertools.repeat () Делает итератор, который снова возвращает объект снова и снова.

Он работает бесконечно, если не указан аргумент Times. Используется в качестве аргумента для карта () для инвариантных параметров к вызываемой функции. Это также может быть использовано с zip () создать инвариантную часть A кортеж записывать. Это делает его бесценным для того, что мы собираемся сделать.

Посмотрите на код ниже:

def repeat(object, times=None):
    # repeat(10, 3) --> 10 10 10
    if times is None:
        while True:
            yield object
    else:
        for i in range(times):
            yield object

list(map(pow, range(10), repeat(2)))
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Выше я определил два аргумента внутри определения Повторите (объект,) Учитывая мой if-else email Спрашивая повторю повтор, сколько раз я хочу, чтобы он прошел на мой объект, и если я не хочу ничего произойти (нет), это будет доходность Это объекты списка выражений обратно ко мне, в этом случае ничего не пойдет на мой объект несколько раз, прежде чем он возвращается мне повторный объект. Я позвонил в свое решение внутри вышеуказанной функции, которая просит список из 10 номеров их полномочия, затем повторяется два раза.

Метод 2.

То, как написано выше, безусловно, выглядит красиво, но это также тот, который написал бы начинающим программистом. В следующем примере сделают тот пример вышеуказанного кода, но с меньшим количеством кода для по-настоящему Pythonic код:

import itertools
squares = list(map(pow, range(10), itertools.repeat(2)))
print(squares)

Вывод:

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Эти три строки представляют один и тот же код, что и выше. Разве это не удивительно! Мы взяли меньше кода, чтобы получить те же результаты, что и один выше!

Оцен оценки влево-правильной оценки его гарантирован. Это делает возможным идиома для кластеризации серии данных в группы N-длины, используя ZIP (* [[ITER (S)] * N) Отказ Это повторяет тот же и тот же итератор N раз, чтобы каждый выходной кортек имел результат N вызовов итератора. Это влияет на разделить вход в куски N-длины. С тех пор, как я попросил 10 номеров с повторением 5 моих выходов выше правильный.

Метод 3

Еще один пример использования Itertools.repeat () является:

import itertools

data = list(zip(range(10), itertools.repeat(5)))
print(data)

Он возвращает итератор кортежей, где количество поематов из списка 1 соответствует списку 2. Итератор останавливается, когда самый короткий список исчерпан. Итак, выход на этот код:

data = [ (0,5),
	 (1,5),
	 (2,5),
	 (3,5),
	 (4,5),
	 (5,5),
	 (6,5),
	 (7,5),
	 (8,5),
         (9,5)]

Этот метод используется, если вы хотите повторить определенное значение или иметь инвариантную часть записи кортежей.

Заключение

Как видно, ITERTOOLS является важным инструментом для использования, если мы хотим создавать повторы с генератором в Python. Мы можем создавать квадраты, поскольку мы видели выше в двух разных методах, и мы можем застегивать два списка с инвариантным значением и распечатать вывод.

У Python есть много инструментов, которые могут облегчить свою работу ежедневно. От создания записи и квадратов, используя карта () функция. Мы можем сделать это с Python в короткой сумме кода и сделать это простым. Я призываю вас читать официальную документацию Python и практиковать немного игры с Itertools Пока вам не удобно использовать его в вашем программировании.

Спасибо, что присоединились к мне в это путешествие Itertools.repeat () Отказ Есть тонна других инструментов, которые вы можете использовать вместо повторить () Отказ Хотя я был бы осторожен! Некоторые из этих методов могут быть использованы только один раз в программе, поэтому вам нужно быть осторожным при использовании их! Другие повторится бесконечно, если не сказано иначе! Тщательно обзор, какой из них будет соответствовать вашему приложению, лучше всего использовать этот метод. Это занимает небольшое испытание и ошибка, но это сделает вас лучшим программистом Python в конце!