Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

475
Visualizações
Permutations without reversed sequences in Python

I would like to generate a list of all permutations of 4 digits where :

  • All 4 digits are always present
  • Two reversed sequences are the same solution. For example. (1,2,3,4) = (4,3,2,1)

I would like to know:

  • What do you call this kind of permutations.
  • If it is possible to generate this list in one step. Below there is an example that generates it in two steps.
import itertools
inp_list = range(1, 5)

# 1. Create the list of all permutations.
permutations = list(itertools.permutations(inp_list))

# 2. Remove sequences that are the reverse of another.
for _p in permutations[::-1]:
    if _p[::-1] in permutations:
        permutations.remove(_p)

for _p in permutations:
    print("\t".join(map(str, _p)))
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

To simplify your code and make it more efficient you could:

1- use a python set as the container (checking the presence of an element is much faster)

2- add the final output directly

3- avoid to create a temporary list with the permutations, keep it as a generator

from itertools import permutations
inp_list = range(1, 5)

out = set()
for p in permutations(inp_list): # loop over generator output
    p = '\t'.join(map(str,p))    # craft the desired output format
    if not p[::-1] in out:       # is the reverse not already in the set?
        out.add(p)               # then add the item
        print(p)                 # and print it

output:

1   2   3   4
1   2   4   3
1   3   2   4
1   3   4   2
1   4   2   3
1   4   3   2
2   1   3   4
2   1   4   3
2   3   1   4
2   4   1   3
3   1   2   4
3   2   1   4
over 4 years ago · Santiago Trujillo Relatório

0

You could just use the smaller one of each reversal pair:

from itertools import permutations

for p in permutations(range(1, 5)):
    if p < p[::-1]:
        print(*p)

Output:

1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 4 1 3
3 1 2 4
3 2 1 4
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda