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.
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