„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie erstelle ich eine neue Liste mit jedem N-ten Element aus einer Originalliste?

Wie erstelle ich eine neue Liste mit jedem N-ten Element aus einer Originalliste?

Veröffentlicht am 08.11.2024
Durchsuche:573

How to Generate a New List with Every Nth Item from an Original List?

Erstellen Sie eine Liste mit jedem N-ten Element aus einer Originalliste

Bei der Datenanalyse oder Programmierung ist es oft notwendig, mit einer Teilmenge von zu arbeiten eine Liste. Eine häufige Aufgabe besteht darin, eine neue Liste zu erstellen, die nur jedes N-te Element der ursprünglichen Liste enthält. Wie können wir beispielsweise bei einer gegebenen Liste mit ganzen Zahlen von 0 bis 1000 eine Liste erhalten, die nur das erste und jedes weitere zehnte Element enthält?

Mit einer herkömmlichen for-Schleife können wir diese Aufgabe wie folgt erledigen:

xs = list(range(1001))
new_list = []
for i, x in enumerate(xs):
    if i % 10 == 0:
        new_list.append(x)

Ein prägnanterer und effizienterer Ansatz ist jedoch mit Pythons Slicing verfügbar:

>>> xs = list(range(1001))
>>> new_list = xs[0::10]

In dieser Lösung erstellt der Ausdruck xs[0::10] eine neue Liste, die jedes 10. Element ab Index 0 enthält. Das Ergebnis ist eine Liste mit [0 , 10, 20, 30, ..., 1000], ohne dass Schleifen oder bedingte Prüfungen erforderlich sind.

Diese Methode ist deutlich schneller als der for-Schleifenansatz und erweist sich beim Umgang mit großen Listen als vorteilhaft. Wie der folgende Zeitvergleich zeigt:

$ python -m timeit -s "xs = list(range(1000))" "[x for i, x in enumerate(xs) if i % 10 == 0]"
500 loops, best of 5: 476 usec per loop

$ python -m timeit -s "xs = list(range(1000))" "xs[0::10]"
100000 loops, best of 5: 3.32 usec per loop

Dieser optimierte Ansatz mit Slicing bietet sowohl Einfachheit als auch Leistungsvorteile für die Erstellung neuer Listen mit jedem N-ten Element einer Originalliste.

Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729392499 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3