Wie können wir Ganzzahlen in Python elegant partitionieren?

Linda Hamilton
Freigeben: 2024-11-06 08:40:02
Original
816 Leute haben es durchsucht

How can we elegantly partition integers in Python?

Ganzzahlpartitionierung mit Eleganz in Python

Die Aufgabe der Ganzzahlpartitionierung besteht darin, eine gegebene Zahl in eine Summe positiver Ganzzahlen, sogenannte Teile, zu zerlegen . Ein häufiges Beispiel ist die Partitionierung der Zahl 4, die als 1 1 1 1 oder 1 1 2 oder 2 2 dargestellt werden kann.

Elegante Python-Lösung

Um das anzugehen Für einen eleganten Ansatz wurde eine Python-Funktion mit dem Namen „Partitionen“ vorgeschlagen:

def partitions(n, I=1):
    yield (n,)
    for i in range(I, n//2 + 1):
        for p in partitions(n-i, i):
            yield (i,) + p
Nach dem Login kopieren

Diese Funktion nutzt Rekursion und liefert alle möglichen Partitionen einer gegebenen Zahl n. Es beginnt mit der Partitionierung von n als einzelnem Teil (selbst) und partitioniert dann n-i rekursiv in Teile, die größer oder gleich i sind.

Leistungsbewertung

Verglichen mit Diese Lösung ist eine zuvor vorgeschlagene Funktion und weist erhebliche Verbesserungen sowohl bei der Geschwindigkeit als auch bei der Speichernutzung auf:

import timeit

n = 20

# Original function
def nolen(n):
    """Original function for integer partitioning."""
    # implementation omitted for brevity

# Proposed 'partitions' function
def partitions(n, I=1):
    # implementation omitted for brevity

# Measure execution time
print("Original function (r0): ", timeit.timeit(lambda: r0 = nolen(n), number=100))
print("Proposed function (r1): ", timeit.timeit(lambda: r1 = list(partitions(n)), number=100))

print(f"Partitions are equal: {sorted(map(sorted, r0)) == sorted(map(sorted, r1))}")
Nach dem Login kopieren

Die vorgeschlagene Partitionsfunktion ist ungefähr 1370-mal schneller als das Original und verbraucht deutlich weniger Speicher.

Alternative Ansätze

Während die Partitionsfunktion eine leistungsstarke und elegante Lösung bietet, gibt es auf Plattformen wie ActiveState andere Optionen:

  • [Generator Für ganzzahlige Partitionen (Python-Rezept)](https://www.activestate.com/recipes/577676-generator-for-integer-partitions/)

Fazit

Die vorgeschlagene Partitionsfunktion bietet einen effizienten und prägnanten Ansatz für die Ganzzahlpartitionierung in Python. Seine Eleganz und Geschwindigkeit machen es zu einem wertvollen Werkzeug für Programmierer, die einen verbesserten Codierungsstil suchen.

Das obige ist der detaillierte Inhalt vonWie können wir Ganzzahlen in Python elegant partitionieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!