Einzeiler zum fürchten

Objektorientierte Skriptsprache: (python.org)
Antworten
Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Einzeiler zum fürchten

Beitrag von fat-lobyte » Sa Dez 29, 2012 9:03 am

Also manchmal mach ich mir selber Angst...

Code: Alles auswählen

# open files
infile_fds = [open(infile, 'r') for infile in infilenames]

# Stick all SeqIO iterators together to form one long chain
record_iter = itertools.chain(*[SeqIO.parse(infile, "fasta") for infile in infile_fds])

try:
    results = run_finders(record_iter)
finally:
    for f in infile_fds:
        f.close()
wat? :geek:

Erste Zeile: verwandle eine Liste von Dateinamen in eine Liste von offenenen Dateideskriptoren

Zweite Zeile: Generiere aus jeder Datei in der Liste der Dateideskriptoren einen Iterator mit den geparsten Einträgen dieser Datei, speichere diesen in eine Liste ab, entpacke die liste und erzeuge einen "zusammengehängten" Iterator mit den Einträgen aller Dateien :roll:

3-4 Zeile: Füttere den Iterator mit den Einträgen in meine Funktion.
# Man beachte: bis jetzt wurde erstmal *gar nix* gelesen. Meine Funktion kann sich jetzt einen Eintrag nach dem anderen in den Speicher ziehen und abarbeiten.

5-7 Zeile: Mach alle Filedeskriptoren zu


Sowas geht auch nur in Python ^^

Aber ich mag das. In der Kürze liegt die Würze.

ps.: Na gut, vielleicht würde man das mit C++11/Lambdas/IOStream auch irgendwie hinkriegen.
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3090
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Einzeiler zum fürchten

Beitrag von cloidnerux » Sa Dez 29, 2012 11:48 am

Also manchmal mach ich mir selber Angst...
Versuch da mal nächste Woche einen Fehler zu finden :D
Sieht aber gut aus.
ps.: Na gut, vielleicht würde man das mit C++11/Lambdas/IOStream auch irgendwie hinkriegen.
Mit C# ginge das höhst wrsl auch, durch Linq ist das hantieren von Datenströmen relativ einfach.
Aber ich möchte sowas nicht umbedingt implementieren wollen^^.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8499
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Einzeiler zum fürchten

Beitrag von Xin » Sa Dez 29, 2012 11:42 pm

fat-lobyte hat geschrieben:Also manchmal mach ich mir selber Angst...
Die Frage ist doch eher, ob das ein Idiom ist, also etwas, was man üblicherweise in der Sprache kennt.
Es sieht kurz aus, was grundsätzlich schonmal gut ist. Wenn diese programmiersprachliche "Floskel" allgemein bekannt ist, sehe ich bei sowas kein Problem.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Einzeiler zum fürchten

Beitrag von fat-lobyte » Mo Dez 31, 2012 12:54 pm

Das erzeugen von Listen aus Iteratoren

Code: Alles auswählen

liste = [x for x in iterator]
Ist auf jeden Fall ein Idiom. Das ist auch eines der besten Features der Sprache, wie ich finde.

Python gefällt mir übrigens immer mehr.
Haters gonna hate, potatoes gonna potate.

Antworten