Python skills verbessern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
kantaki
User
Beiträge: 17
Registriert: Montag 2. Juli 2012, 12:26

Hallo,

ich habe in den letzten Tagen die Python basics gelernt und möchte nun ein wenig sicherer werden.

Gibt es vielleicht eine Seite die kleinere Aufgaben stellt und eine wirklich elegante Lösung anbietet ?

Da ich schon seit längerem programmiere habe ich keine Probleme Lösungen zu finden.
Trotzdem denke ich jedes mal das ich zu festgefahren bin mit statischen Sprachen wie C++ etc und es sicherlich elegantere Lösungen gibt.

Ich möchte einfach nur meine Python skills testen.


Als Beispiel für eine Aufgabe

some_list = ((0,1,2,3,4,5,6,7,8,9),(0,1,2,3,4,5,6,7,8,9),(0,1,2,3,4,5,6,7,8,9))

Wandle die Liste in ein Dictonary um in dem der Key das erste Argument der Liste ist und das Value die restliche Liste.

Soetwas zb
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

kantaki hat geschrieben:some_list = ((0,1,2,3,4,5,6,7,8,9),(0,1,2,3,4,5,6,7,8,9),(0,1,2,3,4,5,6,7,8,9))

Wandle die Liste in ein Dictonary um in dem der Key das erste Argument der Liste ist und das Value die restliche Liste.
Hier ist ein gutes Beispiel dafür warum es keine gute Idee ist den (vermeintlichen) Typ der Daten in den Bezeichnernamen aufzunehmen. Bei some_list handelt es sich mitnichten um eine Liste sondern um ein Tupel. Eine Änderung der Datenstruktur ist im Verlauf eines Projekts immer wieder möglich/erforderlich und dann gäbe ein Bezeichner mit beschreibendem Typnamen einen völlig falschen Hinweis.

Übungsaufgaben habe ich jetzt nicht, aber empfehlenswert sind PEP-8, die Eingabe von import this in IDLE und Code Like a Pythonista: Idiomatic Python.

Die Lösung für die obige Aufgabe könnte wie folgt aussehen. Es ist hier übrigens völlig egal ob man jetzt ein Tupel übergibt oder tatsächlich eine Liste.

Code: Alles auswählen

data = dict(((value[0], value[1:]) for value in some_list))
Antworten