Python Effizientere Permutation


Dan7nm

Ich habe eine Zeichenfolge, die aus x Menge des Buchstabens 'r' und y Menge von 'u' besteht. Und mein Ziel ist es, alle möglichen Kombinationen derselben Menge x,y mit unterschiedlichen Reihenfolgen zu drucken. Dies ist mein Beispiel für einen funktionierenden Code.

import itertools
RIGHT = 'r'
UP = 'u'
def up_and_right(n, k, lst):
    case = RIGHT*n + UP*k
    return [''.join(p) for p in set(itertools.permutations(case))]

Beispiel Ein- und Ausgabe:

input:
lst1 = []
up_and_right(2,2,lst1)
lst1 => output:['ruru', 'urur', 'rruu', 'uurr', 'urru', 'ruur']

Mein Problem ist, wenn die Eingabe eine ganze Zahl größer als 10 ist, dauert die Berechnung des Codes eine Minute. Wie kann ich die Rechenzeit verbessern? Danke im Voraus!

Andrej Kesely

Versuch itertools.combinations:

import itertools

RIGHT = "r"
UP = "u"


def up_and_right(n, k):
    out = []
    for right_idxs in itertools.combinations(range(n + k), r=n):
        s = ""
        for idx in range(n + k):
            if idx in right_idxs:
                s += RIGHT
            else:
                s += UP
        out.append(s)
    return out


print(up_and_right(2, 2))

Drucke:

['rruu', 'ruru', 'ruur', 'urru', 'urur', 'uurr']

Mit Einzeiler:

def up_and_right(n, k):
    return [
        "".join(RIGHT if idx in right_idxs else UP for idx in range(n + k))
        for right_idxs in itertools.combinations(range(n + k), r=n)
    ]

Verwandte Artikel


Effizientere Iteration in Pandas und Python

Thomas Ich habe Hunderte von Textdateien mit Tausenden von Datensätzen, die wie folgt aussehen (6 GB Wetterdaten von NOAA): '0175690150931212019010100567+34300-116166FM-15+06...' Jede Position in der Zeichenfolge hat eindeutige Informationen und ich trenne sie

Python Kmedoids - Effizientere Berechnung neuer Medoidzentren

zelda1234 Ich folge einem ausgezeichneten Medium-Artikel: https://towardsdatascience.com/k-medoids-clustering-on-iris-data-set-1931bf781e05 , um kmedoids von Grund auf neu zu implementieren. Es gibt eine Stelle im Code, an der der Abstand jedes Pixels zu den M

Python, Permutation zur Permuationsindexfunktion

Fadedbee Ich habe einige Permutationen einer Liste: >>> import itertools >>> perms = list(itertools.permutations([0,1,2,3])) >>> perms [(0, 1, 2, 3), (0, 1, 3, 2), (0, 2, 1, 3), (0, 2, 3, 1), (0, 3, 1, 2), (0, 3, 2, 1), (1, 0, 2, 3), (1, 0, 3, 2), (1, 2, 0, 3)

Permutation und Kombination in Python

Python Hat Python eine eingebaute Funktion, mit der ich eine Sequenz wie diese generieren kann? Für i = 5, wie viele verschiedene Arten 0 und 1 können fünf Stellen besetzen wie 00000 00001 00010 00011 00100 . . . . 11111 für i = 6, wie viele Wege 0 und 1 könn

Python 3, Permutation, Kombination

Baller Mein Problem ist: Schreiben Sie einen Code, der alle möglichen Kombinationen für x, y, z so ausgibt, dass sie dem Eingabewert der Gesamtsumme entsprechen. x,y,z = integer:: x*500 + y*300 + z*400 = total sum aber es wurden nicht alle möglichen Antworten

Matrixspalten Permutation Python

Wanderung Ich versuche, eine Lösung zu finden, um alle Spaltenpermutationen einer Matrix zu finden. Also habe ich diesen Code geschrieben, aber er funktioniert nicht. Gelöst: #! python import numpy def permutation(matrix): if numpy.size(matrix,1) == 1:

Pandas Datenrahmen aus Python-Listen auf effizientere Weise

Question_bank Ich habe 3 Listen in python. Mit diesen 3 Listen möchte ich einen Datenrahmen erstellen pandas. Ich habe wie unten gemacht. import pandas as pd import numpy as np mysql_list = ['id', 'date', 'name'] oracle_list = ['id', 'date-1', 'name_1'] sql_l