Itertool functions

the following module functions all construct and return iterators. Alguns providestreams de comprimento infinito, então eles só devem ser acessados por funções oroops que truncam o fluxo.

itertools.accumulate(iterável)¶

faça um iterador que devolve somas acumuladas ou acumuladas de outras funções Binárias (especificadas através do argumento optionalfunc).,se o func for fornecido, deve ser uma função de dois argumentos. Elementos da entrada iterable pode ser qualquer tipo que pode ser aceito como argumentos para o func. (For example, with default operation of addition, elements may be any addabletype including Decimal orFraction.)

Usually, the number of elements output matches the input iterable.No entanto, se o argumento inicial da palavra-chave for fornecido, aacumulação leva para fora com o valor inicial de modo que o outputh como mais um elemento do que o input iterable.,

aproximadamente equivalente a:

Há um número de usos para o argumento func. Pode ser definido comomin()para um mínimo de execução,max()para um máximo de execução, ouoperator.mul() para um produto em execução. Tabelas de amortização podem ser construídas acumulando juros e aplicando pagamentos. As relações de recurrence do primeiro pedido podem ser modeladas fornecendo o valor inicial no iterável e utilizando apenas o total acumulado no argumento func:

ver functools.reduce() para uma função semelhante que devolve apenas o valor final acumulado.,

novo na versão 3.2.

alterado na versão 3.3: adicionou o parâmetro opcional func.

alterado na versão 3.8: adicionou o parâmetro inicial opcional.

itertools.chain(*iterables)¶

Tornar um iterador que retorna os elementos da primeira iterable até isexhausted, em seguida, passa para a próxima iterable, até que todos os iterables areexhausted. Usado para tratar sequências consecutivas como uma única sequência.,Mais ou menos equivalente a:

def chain(*iterables): # chain('ABC', 'DEF') --> A B C D E F for it in iterables: for element in it: yield element

classmethodchain.from_iterable(iterable)¶

Suplente construtor para chain(). Recebe entradas acorrentadas de um único argumento iterável que é avaliado preguiçosamente. Mais ou menos equivalente a:

def from_iterable(iterables): # chain.from_iterable() --> A B C D E F for it in iterables: for element in it: yield element

itertools.combinations(iterable, r) n

de Retorno r comprimento subseqüências de elementos de entrada iterable.,

as tuplas combinadas são emitidas na ordenação lexicográfica de acordo com a ordem da entrada iterável. Assim, se a entrada iterável for ordenada, as tuplas combinadas serão produzidas em ordem ordenada.

os elementos são tratados como únicos com base na sua posição, e não no seu valor. Então, se os elementos de entrada são únicos, não haverá repetições em cada combinação.,

mais ou menos equivalente a:

O código combinations() pode ser também expressa como uma subsequenceof permutations() após a filtragem de entradas, onde os elementos são notin ordem de classificação (de acordo com a sua posição na entrada da piscina):

O número de itens retornados é n! / r! / (n-r)! quando 0 <= r <= nou zero quando r > n.,

itertools.combinations_with_replacement(iterable, r) n

de Retorno r comprimento subseqüências de elementos de entrada iterableallowing elementos individuais para ser repetido mais de uma vez.

as tuplas combinadas são emitidas na ordenação lexicográfica de acordo com a ordem da entrada iterável. Assim, se a entrada iterável for ordenada, as tuplas combinadas serão produzidas em ordem ordenada.

os elementos são tratados como únicos com base na sua posição, e não no seu valor. Assim, se os elementos de entrada forem únicos, as combinações geradas também serão únicas.,

mais ou menos equivalente a:

O código combinations_with_replacement() pode ser também expressa asa subsequence de product() após a filtragem de entradas onde o elementsare não em ordem de classificação (de acordo com a sua posição na entrada da piscina):

O número de itens retornados é (n+r-1)! / r! / (n-1)! quando n > 0.

novo na versão 3.1.,

itertools.compress(dados, seletores)¶

Tornar um iterador que os filtros de elementos de dados retornar somente os thathave um elemento correspondente no seletores que avalia True.Pára quando os dados ou os selectores iterables tiverem sido esgotados.Aproximadamente equivalente a:

def compress(data, selectors): # compress('ABCDEF', ) --> A C E F return (d for d, s in zip(data, selectors) if s)

novo na versão 3.1.

itertools.count(start=0, step=1)¶

faça um iterador que retorne valores uniformemente espaçados, começando com o início do número., Frequentemente utilizado como argumento para para gerar pontos de dados consecutivos.Também, usado com zip() para adicionar números de sequência. Aproximadamente equivalente a:

def count(start=0, step=1): # count(10) --> 10 11 12 13 14 ... # count(2.5, 0.5) -> 2.5 3.0 3.5 ... n = start while True: yield n n += step

ao contar com números de vírgula flutuante, uma melhor precisão pode ser alcançada por vezes substituindo código multiplicativo como: (start + step * ifor i in count()).

alterado na versão 3.1: argumento de passo Adicionado e argumentos não inteiros permitidos.,

itertools.cycle(iterável)¶

Make an iterator returning elements from the iterable and saving a copy of each.Quando o iterável estiver esgotado, devolva os elementos da cópia guardada. Repete indefinidamente. Aproximadamente equivalente a:

Nota, Este membro do toolkit pode exigir armazenamento auxiliar significativo (dependendo do comprimento do iterável).,

itertools.dropwhile(predicado, iterável)¶

faça um iterador que retire elementos do iterável, desde que o predicado seja verdadeiro; posteriormente, devolve todos os elementos. Nota: o iterador não produz qualquer resultado até que o predicado se torne falso pela primeira vez, pelo que pode ter um tempo de arranque prolongado. Mais ou menos equivalente a:

itertools.filterfalse(predicado, iterable)¶

Tornar um iterador que filtra elementos de iterable retornar somente os forwhich o predicado False., If predicate is None, return the items that are false. Aproximadamente equivalente a:

itertools.groupby(iterável, chave=nenhuma)¶

faça um iterador que devolve chaves e grupos consecutivos do iterable.A chave é uma função computando um valor chave para cada elemento. If not specificed or is None, key defaults to an identity function and returns the element unchanged. De um modo geral, as necessidades iteráveis já devem ser ordenadas com base na mesma função-chave.,

A operação de groupby() é semelhante a uniq filtro Unix. Itgenerates a break or new group every time the value of the key function changes (which is why it is usually necessary to have sorted the data using the same keyfunction). Esse comportamento difere do grupo SQL pelo qual agrega elementos comuns independentemente de sua ordem de entrada.

o grupo devolvido é ele próprio um iterador que partilha a iterável subjacente com groupby()., Como a fonte é compartilhada, quando o objeto groupby()é avançado, o grupo anterior não é mais visível. Assim, se o datais necessários mais tarde, ele deve ser armazenado como uma lista:

groupby() é equivalente a:

itertools.islice(iterable, parar)¶ itertools.islice(iterable, iniciar, parar)

Tornar um iterador que retorna os elementos selecionados a partir do iterable. Se o início não é zero, então os elementos do iterable são ignorados até que o início seja alcançado.,Depois disso, os elementos são retornados consecutivamente, a menos que step seja definido mais alto do que um, o que resulta em itens sendo ignorados. Se a paragem for None, então a iteração continua até que o iterador esteja esgotado, se é que está; CaSO contrário, pára na posição especificada. Ao contrário da fatiagem regular, islice() não suporta valores negativos para iniciar, parar ou passo. Pode ser usado para extrair campos relacionados de dados onde a estrutura interna foi achatada (por exemplo, o relatório de linha amulti pode listar um campo de nome em cada terceira linha)., Aproximadamente equivalente a:

Se o início for None, então a iteração começa em zero. Se o passo é None, então o passo é por omissão um.

itertools.permutations(iterable, r=None)¶

Return successive r length permutations of elements in the iterable.

Se r não for especificado ou for None, então r é o comprimento do iterável e todas as possíveis permutações de comprimento completo são geradas.

as tuplas de permutação são emitidas na ordenação lexicográfica de acordo com a ordem da entrada iterável., Assim, se a entrada iterável for ordenada, as tuplas combinadas serão produzidas em ordem ordenada.

os elementos são tratados como únicos com base na sua posição, e não no seu valor. Então, se os elementos de entrada são únicos, não haverá repetições em cada permutação.,

mais ou menos equivalente a:

O código permutations() pode ser também expressa como uma subsequence deproduct(), filtrada para excluir entradas com elementos repetidos (thosefrom a mesma posição na entrada da piscina):

O número de itens retornados é n! / (n-r)! quando 0 <= r <= nou zero quando r > n.

itertools.product(*iterables, repeat=1)

produto cartesiano de entradas iterables.,

os laços aninhados ciclo como um odómetro com o elemento mais à direita advancando em cada iteração. Este padrão cria uma ordenação lexicográfica de modo que, se os iterables de entrada são ordenados, as tuplas de produto são emitidas em sortedorder.

para calcular o produto de um iterável consigo mesmo, especifique o número de respostas com o argumento opcional repetir palavra-chave. Por exemplo,product(A, repeat=4) significa o mesmo que product(A, A, A, A).,

Esta função é equivalente à seguinte código, exceto que theactual implementação não construir resultados intermediários na memória:

Antes de product() é executado, ele consome completamente a entrada iterables,manutenção de piscinas de valores na memória para gerar produtos. Assim, é apenas útil com entradas finitas.

itertools.repeat(object)¶

faça um iterador que devolve o objecto vezes sem conta. Executa indefinitelyunless the times argument is specified., Usado como argumento para para parâmetros invasivos para a função chamada. Also used with zip() toreate an invariant part of a tuple record.

mais ou menos equivalente a:

Um uso comum para repetir o fornecimento de um fluxo de valores constantes para mapor cep:

>>> list(map(pow, range(10), repeat(2)))

itertools.starmap(função, iterable)¶

Tornar um iterador que calcula a função, usando os argumentos obtidos da iterable., Usado em vez de quando os parâmetros de argumento são já agrupados em tuplas de um único iterável (os dados foram “pré-ziped”). Thedifference entre map() e starmap() paralelos a distinctionbetween function(a,b) e function(*c). Mais ou menos equivalente a:

def starmap(function, iterable): # starmap(pow, ) --> 32 9 1000 for args in iterable: yield function(*args)

itertools.takewhile(predicado, iterable)¶

Tornar um iterador que retorna os elementos da iterable enquanto thepredicate é verdadeiro., Mais ou menos equivalente a:

def takewhile(predicate, iterable): # takewhile(lambda x: x<5, ) --> 1 4 for x in iterable: if predicate(x): yield x else: break

itertools.tee(iterable, n=2) n

de Retorno n independente iteradores a partir de um único iterable.

o seguinte código Python ajuda a explicar o que o tee faz (embora a implementação real seja mais complexa e use apenas uma fila underlyingFIFO).

aproximadamente equivalente a:

Uma vez fez uma divisão, o iterável original não deve ser usado em qualquer outro lugar; caso contrário, o iterável poderia ser avançado sem que os objetos do tee fossem informados.,

tee iterators are not threadsafe. RuntimeError pode beraised quando utilizar simultaneamente os iteradores retornado pelo mesmo tee()chamada, mesmo se o original iterable é thread-safe.este itertool pode necessitar de armazenamento auxiliar significativo (dependendo de como muitos dados temporários precisam ser armazenados). Em geral, se um iterador usa mais ou todos os dados antes de outro iterator Iniciar, é mais rápido usarlist() em vez de tee().,

itertools.zip_longest(*iterables, fillvalue=Nenhum)¶

Tornar um iterador que agrega elementos de cada um dos iterables. Se os iteráveis tiverem comprimento desigual, os valores em falta são preenchidos com o valor de enchimento.A iteração continua até que o mais longo iterável esteja exausto. Mais ou menos equivalente a:

Se um dos iterables é potencialmente infinito, então a zip_longest()função deve ser envolvida com algo que limita o número de chamadas(por exemplo, islice() ou takewhile())., If not specified, fillvalue defaults to None.