Python-Liste Iteration in One-Liner
Ich bin derzeit lernen Python.
Wie mache ich das:
dates = list()
for entry in some_list:
entry_split = entry.split()
if len(entry_split) >= 3:
date = entry_split[1]
if date not in dates:
dates.append(date)
in einem ein-Zeiler in Python?
- lange one-Liner sind wahrscheinlich nicht das beste, was, Tauchen Sie ein in für Ihren ersten Tag in python.
- Warum würden Sie wollen? Es kann getan werden, aber die 1-liner wird wahrscheinlich werden weniger effizient und schwieriger zu verstehen. 1-Liner sollte nur verwendet werden, wenn Sie erhöhen die übersichtlichkeit des Codes.
- Könnte noch ein lecit Frage!
- Ich Stimme mit @SlaterTyranus - was haben Sie sieht gut aus!
- Liste Verstehens Häufig schneller als das erstellen einer Liste ein Element in einer Zeit, aber in diesem Fall nicht geeignet für eine aufgrund der Abhängigkeit vom teilweise erstellt Liste.
- Für einmal, jeder scheint zu vereinbaren, um stick mit dem code, den ich habe. Tun und beachten diese Vorschläge. Vielen Dank Euch allen!
- meiner Meinung nach
if date not in dates
bedeutet, es sollte nicht sein, ein Einzeiler. - Recht. In diesem Fall würden Sie brauchen, um split die Zeichenfolge, die mehrere Male aber das würde zu negieren alle Beschleunigungen würden Sie gewinnen aus der Liste-comp. In jedem Fall ist aber der primäre Grund für die Verwendung einer Liste-comp ist für die code-Klarheit, nicht die Geschwindigkeit.
InformationsquelleAutor dfernan | 2013-06-19
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anstelle eines 1-liner, wahrscheinlich ist es einfacher zu verstehen, mit einem 3-Zeiler.
import collections
:AttributeError: 'module' object has no attribute 'OrderedDict'
. Irgendetwas fehlt?import collections
ersten. Und Sie müssen die Verwendung von Python 2.7 oder 3.x.Wenn die Reihenfolge nicht egal:
Natürlich, wenn Sie wollen eine Liste statt ein gesetzt, geben Sie nur das Ergebnis in
list()
.Obwohl ich würde wahrscheinlich stick mit dem, was Sie haben, wie es ist mehr lesbar.
Scheint mir, dass Sie Spalten jedes element in
some_list
, zu überprüfen, ob die split-element hat 3 oder mehr Teile, und wobei der zweite Teil und anfügen an die Liste, wenn es nicht bereits in der Liste. Können Sie eine Menge für diese Letzte Verhalten, da setzt nur enthalten einzigartige Elemente.Ich re-cast das Ergebnis in einer Liste, weil Sie verwendet eine Liste.
Versuchen, vorausgesetzt, dass die Satz Verstehens sind, die in Ihrer Python-version:
Wenn gesetzt Verstehens nicht verfügbar sind, wird diese Arbeit:
Aber im ernst, es ist nicht eine gute Idee, dies zu schreiben, als one-liner, aus den genannten Gründen in die Kommentare. Auch so, dein code ist ein bisschen besser, verwenden Sie ein
set
Wann immer Sie brauchen, um Duplikate entfernen aus einer Sammlung von Elementen:Mithilfe einer Liste Verständnis:
gibt uns, was wir wollen: