Inhaltsverzeichnis
Verwenden Sie Listenverständnisse
Beispiel
Ausgabe
Eingebaute Funktionen nutzen
Verwenden Sie Verknüpfungen
Lambda-Funktion verwenden
Vermeiden Sie redundanten Code
Code-Golfbeispiele
Beispiel: FizzBuzz
Fazit

Codegolf in Python

Aug 19, 2023 pm 11:25 PM
深度优先搜索(dfs) 动态规划(dp) 列表推导(list comprehension)

Codegolf in Python

Codegolf ist ein Programmierwettbewerb, bei dem die Teilnehmer herausgefordert werden, ein Programm zu schreiben, das ein bestimmtes Problem in möglichst wenigen Zeichen löst. Mit anderen Worten: Beim Code-Golf geht es darum, sauberen Code zu schreiben. Während Code Golfing in jeder Programmiersprache durchgeführt werden kann, ist Python aufgrund seiner prägnanten Syntax und leistungsstarken integrierten Funktionen besonders für diese Herausforderung geeignet.

In diesem Artikel werden wir einige Tipps und Strategien für Code Golf in Python untersuchen und gleichzeitig anwendbare Beispiele und Ergebnisse bereitstellen.

Verwenden Sie Listenverständnisse

Listenverständnisse sind ein leistungsstarkes Werkzeug in Python, um Listen auf prägnante und lesbare Weise zu erstellen. Beim Code-Golf können Listenverständnisse längere Schleifen und bedingte Anweisungen ersetzen. Betrachten Sie beispielsweise den folgenden Code, der eine Liste mit allen geraden Zahlen zwischen 1 und 10 erstellt:

even_numbers = []
for i in range(1, 11):
    if i % 2 == 0:
        even_numbers.append(i)
Nach dem Login kopieren

Dieser Code kann mithilfe von Listenverständnissen auf eine Zeile reduziert werden:

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

even_numbers = [i for i in range(1, 11) if i % 2 == 0]
print(even_numbers)
Nach dem Login kopieren

Ausgabe

[2, 4, 6, 8, 10]
Nach dem Login kopieren

Dieser Code verwendet Listenverständnisse anstelle einer for-Schleife und der append()-Methode, um dieselbe Liste gerader Zahlen zwischen 1 und 10 wie im vorherigen Beispiel zu generieren. Durch die Verwendung von Listenverständnissen kann die zum Erreichen eines Ergebnisses erforderliche Codemenge erheblich reduziert werden, was sie zu einem leistungsstarken Werkzeug im Code-Golf macht.

Eingebaute Funktionen nutzen

Python verfügt über eine breite Palette integrierter Funktionen, um gängige Vorgänge auf prägnante Weise auszuführen. Beim Code-Golf ist es wichtig, sich mit diesen Funktionen und ihrer Syntax vertraut zu machen. Betrachten Sie beispielsweise den folgenden Code, der die Summe aller geraden Zahlen zwischen 1 und 10 berechnet:

even_numbers = [i for i in range(1, 11) if i % 2 == 0]
even_sum = 0
for num in even_numbers:
    even_sum += num
Nach dem Login kopieren

Mit der integrierten Funktion sum() kann dieser Code in einer Zeile zusammengefasst werden:

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

even_sum = sum([i for i in range(1, 11) if i % 2 == 0])
print(even_sum)
Nach dem Login kopieren

Ausgabe

30
Nach dem Login kopieren

Es ist weniger Code erforderlich, um mithilfe von sum() und Listenverständnissen eine Liste gerader Zahlen von 1 bis 10 zu generieren und deren Summe als Ausgabe auszugeben.

Verwenden Sie Verknüpfungen

In Python gibt es einige Verknüpfungen und Abkürzungen, die die für bestimmte Vorgänge erforderliche Codemenge effektiv reduzieren können. Schauen wir uns zum Beispiel den folgenden Code an, der überprüft, ob ein bestimmter Wert in einer Liste vorhanden ist:

a, b = 0, 1
for i in range(10):
    print(a)
    a, b = b, a+b
Nach dem Login kopieren

Dieser Code kann mithilfe der Lambda-Funktion und der Funktion Reduce() im Functools-Modul in einer Zeile zusammengefasst werden:

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

from functools import reduce
print(*(reduce(lambda f, _: f+[f[-1]+f[-2]], range(8), [0, 1])), sep='\n')
Nach dem Login kopieren

Ausgabe

3
0
1
1
2
3
5
8
13
Nach dem Login kopieren

Dieses Programm verwendet die Funktionen Reduce() und Lambda, um die Anzahl der Vokale in „Hello, World!“ zu zählen, generiert die ersten 8 Fibonacci-Zahlen und gibt dann die Sequenz aus.

Lambda-Funktion verwenden

In Python ist eine Lambda-Funktion eine unbenannte Funktion, die in einer Codezeile deklariert werden kann. Lambda-Funktionen sind besonders nützlich für die Codekomprimierung, wenn Sie schnell eine einfache Funktion definieren müssen. Betrachten Sie beispielsweise den folgenden Code, der eine Liste von Tupeln basierend auf dem zweiten Element jedes Tupels sortiert:

my_list = [(1, 3), (2, 1), (3, 2)]
def sort_by_second(elem):
    return elem[1]
sorted_list = sorted(my_list, key=sort_by_second)
Nach dem Login kopieren

Mit der Lambda-Funktion können Sie diesen Code in eine Zeile komprimieren:

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

my_list = [(1, 3), (2, 1), (3, 2)]
sorted_list = sorted(my_list, key=lambda x: x[1])
Nach dem Login kopieren

Ausgabe

[(2, 1), (3, 2), (1, 3)]
Nach dem Login kopieren

Durch die Verwendung von Lambda-Funktionen können wir Sortierkriterien prägnant und lesbar definieren, ohne Funktionen separat definieren zu müssen.

Vermeiden Sie redundanten Code

Beim Code-Golf ist es wichtig, das Schreiben von redundantem oder sich wiederholendem Code zu vermeiden. Dazu können unnötige Variablen, Schleifen oder bedingte Anweisungen gehören. Betrachten Sie beispielsweise den folgenden Code, der die Anzahl der Vokale in einer Zeichenfolge zählt:

my_string = "Hello, World!"
vowel_count = 0
for char in my_string:
    if char in "aeiouAEIOU":
        vowel_count += 1
print(vowel_count)
Nach dem Login kopieren

Mit der Funktion count() und der Methode str.lower() kann dieser Code in einer Zeile zusammengefasst werden:

Die chinesische Übersetzung von

Beispiel

lautet:

Beispiel

my_string = "Hello, World!"
print(sum(my_string.lower().count(vowel) for vowel in "aeiou"))
Nach dem Login kopieren

Ausgabe

3
Nach dem Login kopieren

Durch die Verwendung der Funktion count() und der Methode str.lower() können wir denselben Vorgang präziser und lesbarer ausführen.

Die chinesische Übersetzung von

Code-Golfbeispiele

lautet:

Code-Golfbeispiele

Um einige der von uns besprochenen Techniken und Strategien zu demonstrieren, schauen wir uns einige Beispiele für Python-Code-Golf an.

Beispiel: FizzBuzz

Das FizzBuzz-Problem ist eine häufige Codierungsherausforderung, bei der Zahlen von 1 bis 100 gedruckt, Vielfache von 3 durch „Fizz“, Vielfache von 5 durch „Buzz“ und Vielfache von 3 durch „Buzz“ durch Ersetzen der Zahl durch „ FizzBuzz". Hier ist eine Lösung für das FizzBuzz-Problem mit herkömmlichen Schleifen und bedingten Methoden:

for i in range(1, 101):
    if i % 15 == 0:
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)
Nach dem Login kopieren

Mithilfe von Listenverständnissen und Zeichenfolgenverkettung kann dieser Code in einer Zeile zusammengefasst werden:

print('\n'.join("Fizz"*(i%3==0)+"Buzz"*(i%5==0) or str(i) for i in range(1,101)))
Nach dem Login kopieren

Durch die Verwendung von Listenverständnissen und Zeichenfolgenverkettung können wir die Menge an Code, die zur Lösung von FizzBuzz-Problemen erforderlich ist, erheblich reduzieren.

Das Ausgabeprogramm ersetzt Vielfache von 3 durch „Fizz“, Vielfache von 5 durch „Buzz“ und Zahlen, die beide Vielfache von 3 und 5 sind, durch „FizzBuzz“. Alle anderen Zahlen werden unverändert gedruckt.

Fazit

Zusammenfassend ist Code Golf eine beliebte Programmiermethode, bei der es darum geht, Code mit möglichst wenigen Zeichen zu schreiben, um eine Aufgabe zu erledigen. In Python gibt es mehrere Techniken, mit denen Sie die Codegröße reduzieren können, z. B. die Verwendung von Listenverständnissen, Lambda-Funktionen und integrierten Funktionen wie sum() und sorted(). Während Code-Golf eine unterhaltsame und lehrreiche Übung sein kann, sollte die Lesbarkeit und Wartbarkeit Ihres Codes immer oberste Priorität haben, wenn Sie Code für reale Anwendungen schreiben. Auch wenn es verlockend sein mag, den kürzestmöglichen Code zu verwenden, ist es für Sie und andere wichtig, Ihren Code klar und verständlich zu halten.

Das obige ist der detaillierte Inhalt vonCodegolf in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1663
14
PHP-Tutorial
1263
29
C#-Tutorial
1237
24
Python vs. C: Anwendungen und Anwendungsfälle verglichen Python vs. C: Anwendungen und Anwendungsfälle verglichen Apr 12, 2025 am 12:01 AM

Python eignet sich für Datenwissenschafts-, Webentwicklungs- und Automatisierungsaufgaben, während C für Systemprogrammierung, Spieleentwicklung und eingebettete Systeme geeignet ist. Python ist bekannt für seine Einfachheit und sein starkes Ökosystem, während C für seine hohen Leistung und die zugrunde liegenden Kontrollfunktionen bekannt ist.

Der 2-stündige Python-Plan: ein realistischer Ansatz Der 2-stündige Python-Plan: ein realistischer Ansatz Apr 11, 2025 am 12:04 AM

Sie können grundlegende Programmierkonzepte und Fähigkeiten von Python innerhalb von 2 Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master Control Flow (bedingte Anweisungen und Schleifen), 3.. Verstehen Sie die Definition und Verwendung von Funktionen, 4. Beginnen Sie schnell mit der Python -Programmierung durch einfache Beispiele und Code -Snippets.

Python: Spiele, GUIs und mehr Python: Spiele, GUIs und mehr Apr 13, 2025 am 12:14 AM

Python zeichnet sich in Gaming und GUI -Entwicklung aus. 1) Spielentwicklung verwendet Pygame, die Zeichnungen, Audio- und andere Funktionen bereitstellt, die für die Erstellung von 2D -Spielen geeignet sind. 2) Die GUI -Entwicklung kann Tkinter oder Pyqt auswählen. Tkinter ist einfach und einfach zu bedienen. PYQT hat reichhaltige Funktionen und ist für die berufliche Entwicklung geeignet.

Wie viel Python können Sie in 2 Stunden lernen? Wie viel Python können Sie in 2 Stunden lernen? Apr 09, 2025 pm 04:33 PM

Sie können die Grundlagen von Python innerhalb von zwei Stunden lernen. 1. Lernen Sie Variablen und Datentypen, 2. Master -Steuerungsstrukturen wie wenn Aussagen und Schleifen, 3. Verstehen Sie die Definition und Verwendung von Funktionen. Diese werden Ihnen helfen, einfache Python -Programme zu schreiben.

Python vs. C: Lernkurven und Benutzerfreundlichkeit Python vs. C: Lernkurven und Benutzerfreundlichkeit Apr 19, 2025 am 12:20 AM

Python ist leichter zu lernen und zu verwenden, während C leistungsfähiger, aber komplexer ist. 1. Python -Syntax ist prägnant und für Anfänger geeignet. Durch die dynamische Tippen und die automatische Speicherverwaltung können Sie die Verwendung einfach zu verwenden, kann jedoch zur Laufzeitfehler führen. 2.C bietet Steuerung und erweiterte Funktionen auf niedrigem Niveau, geeignet für Hochleistungsanwendungen, hat jedoch einen hohen Lernschwellenwert und erfordert manuellem Speicher und Typensicherheitsmanagement.

Python und Zeit: Machen Sie das Beste aus Ihrer Studienzeit Python und Zeit: Machen Sie das Beste aus Ihrer Studienzeit Apr 14, 2025 am 12:02 AM

Um die Effizienz des Lernens von Python in einer begrenzten Zeit zu maximieren, können Sie Pythons DateTime-, Zeit- und Zeitplanmodule verwenden. 1. Das DateTime -Modul wird verwendet, um die Lernzeit aufzuzeichnen und zu planen. 2. Das Zeitmodul hilft, die Studie zu setzen und Zeit zu ruhen. 3. Das Zeitplanmodul arrangiert automatisch wöchentliche Lernaufgaben.

Python: Erforschen der primären Anwendungen Python: Erforschen der primären Anwendungen Apr 10, 2025 am 09:41 AM

Python wird in den Bereichen Webentwicklung, Datenwissenschaft, maschinelles Lernen, Automatisierung und Skripten häufig verwendet. 1) In der Webentwicklung vereinfachen Django und Flask Frameworks den Entwicklungsprozess. 2) In den Bereichen Datenwissenschaft und maschinelles Lernen bieten Numpy-, Pandas-, Scikit-Learn- und TensorFlow-Bibliotheken eine starke Unterstützung. 3) In Bezug auf Automatisierung und Skript ist Python für Aufgaben wie automatisiertes Test und Systemmanagement geeignet.

Python: Automatisierung, Skript- und Aufgabenverwaltung Python: Automatisierung, Skript- und Aufgabenverwaltung Apr 16, 2025 am 12:14 AM

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

See all articles