Seite 1 von 1
Listen kombinieren und verschachteln
Verfasst: Mittwoch 11. April 2012, 15:57
von sublist
Hallo.
Ich versuche gerade umständlich über schleifen mir meine liste zusammen zu bauen.
Folgendes hab ich:
und haben will ich:
Geht das nicht einfacherer als sich das selbst zusammen zu stellen?
Danke für eure Tipps^^

Re: Listen kombinieren und verschachteln
Verfasst: Mittwoch 11. April 2012, 16:00
von Hyperion
Du suchst ``zip``
Wenn es sich aber tatsächlich um einen Index handelt sollte, könntest Du auch mit ``enumerate`` arbeiten. Wenn die Zahl "hinten" stehen soll, dann eher mit ``itertools.count`` und ``zip``.
Re: Listen kombinieren und verschachteln
Verfasst: Mittwoch 11. April 2012, 16:08
von sublist
Super! Zip macht genau das was ich will!
Habs zwar noch nie gehört, aber jetzt werd ichs mir merken.
Danke!
Re: Listen kombinieren und verschachteln
Verfasst: Mittwoch 11. April 2012, 16:10
von nomnom
Hyperion hat geschrieben:Wenn es sich aber tatsächlich um einen Index handelt sollte, könntest Du auch mit ``enumerate`` arbeiten. Wenn die Zahl "hinten" stehen soll, dann eher mit ``itertools.count`` und ``zip``.
Wozu braucht man denn einen Index à la „[[0, 'erstes element'], [1, 'zweites Element']]“?

Re: Listen kombinieren und verschachteln
Verfasst: Mittwoch 11. April 2012, 16:13
von sublist
Ich möchte die liste mit
sortieren.
Es ist auch kein Index
Re: Listen kombinieren und verschachteln
Verfasst: Mittwoch 11. April 2012, 16:47
von Hyperion
Kannst Du da mal ein wenig beschreiben, was Du genau vor hast? Sortieren kann man ja auch nicht numerische Werte...
Re: Listen kombinieren und verschachteln
Verfasst: Mittwoch 11. April 2012, 16:53
von sublist
Eigtl. will ich genau das hier machen. (Es funktioniert auch bereits bei mir)
Code: Alles auswählen
student_tuples = [('john', 'A', 15), ('jane', 'B', 12),('dave', 'B', 10)]
sorted(student_tuples, key=lambda student: student[2]) # sort by age
Vielleicht kann mir ja noch jemand erklären wie das mit den Lamda-Expressions funzt.
Ich kann nämlich bei
bei dem string eintragen was ich will und der sortiert trotzdem

Re: Listen kombinieren und verschachteln
Verfasst: Mittwoch 11. April 2012, 16:57
von nomnom
Code: Alles auswählen
>>> from operator import itemgetter
>>> students = [('john', 'A', 15), ('jane', 'B', 12),('dave', 'B', 10)]
>>> sorted(students)
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
>>> students.sort(key=itemgetter(2))
>>> students
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
>>>
Benutz’ list.sort, nicht sorted. „sorted“ liefert die sortierte Liste
zurück, und ändert sie nicht.
Re: Listen kombinieren und verschachteln
Verfasst: Mittwoch 11. April 2012, 17:00
von sublist
Ok. Werd ich mir merken

Das mit dem Lamda raff ich aber trotzdem überhaupt nicht

Auch nicht, wenn ich es bei Wikipedia nachlese...
Re: Listen kombinieren und verschachteln
Verfasst: Mittwoch 11. April 2012, 17:10
von Hyperion
Was genau verstehst Du denn nicht?
Re: Listen kombinieren und verschachteln
Verfasst: Mittwoch 11. April 2012, 17:13
von sublist
Ich glaub mir fehlt es an grundlegendem Wissen, um das zu verstehen. So weit bin ich noch nicht...
Anonyme Funktionen sagen mir einfach nichts
Re: Listen kombinieren und verschachteln
Verfasst: Mittwoch 11. April 2012, 17:15
von cofi
Anonyme Funktionen sind harmlos, versuche doch mal eine Funktion zu bauen, die dasselbe wie der Lambda-Ausdruck macht.
Re: Listen kombinieren und verschachteln
Verfasst: Mittwoch 11. April 2012, 17:36
von /me
cofi hat geschrieben:Anonyme Funktionen sind harmlos, [...]
... und werden häufig nur aus reiner Begeisterung für anonyme Funktionen eingesetzt.
Re: Listen kombinieren und verschachteln
Verfasst: Donnerstag 12. April 2012, 08:53
von Leonidas
In dem Fall ist jedoch ``itemgetter`` die richtige Lösung.
Dazu habe ich sogar mal eine kurze Erklärung geschrieben, wie das so funktioniert.
Re: Listen kombinieren und verschachteln
Verfasst: Freitag 4. Mai 2012, 22:09
von woody55
Hallo!
Ich habe genau das gleiche Problem wie sublist und Hyperions Antwort ist auch das, was ich suche.
Aber das kommt bei mir heraus:
Code: Alles auswählen
>>> listA = ["A", "B", "C", "D"]
>>> listB = [1, 2, 3, 4]
>>> want=zip(listA,listB)
>>> want
<zip object at 0x101cc4ef0>
>>>
Wie bekomme ich 'want' als Liste von Tupeln?
Ich finde auch keine Methode dazu außer want.__next__(), aber das gibt mir immer nur einen Tupel. Ich will aber die ganze Liste.
Sorry für die wahrscheinlich bescheuerte Frage, aber ich programmiere erst kurz in Python.
Bitte um eine verständliche Antwort.
Re: Listen kombinieren und verschachteln
Verfasst: Freitag 4. Mai 2012, 22:14
von webspider
Code: Alles auswählen
>>> A = ["A", "B", "C", "D"]
>>> B = [1, 2, 3, 4]
>>> C = zip(A, B)
>>> C
[('A', 1), ('B', 2), ('C', 3), ('D', 4)]
>>> list(zip(A, B))
[('A', 1), ('B', 2), ('C', 3), ('D', 4)]
Du kannst mittels list() versuchen Objekte der Sorte als Liste darstellen zu lassen. Merkwürdig bleibt es dennoch, dass es bei dir andere Resultate hervorrufen soll. Welche Python-Version nutzt du?
Re: Listen kombinieren und verschachteln
Verfasst: Freitag 4. Mai 2012, 22:20
von woody55
Danke für die schnelle Antwort!
Code: Alles auswählen
ActivePython 3.2.2.3 (ActiveState Software Inc.) based on
Python 3.2.2 (default, Sep 8 2011, 12:20:30)
[GCC 4.2.1 (Apple Inc. build 5664)] on darwin
Type "copyright", "credits" or "license()" for more information.
Liegt es an der Version?
Re: Listen kombinieren und verschachteln
Verfasst: Freitag 4. Mai 2012, 22:22
von woody55
Ok, es ist die Version:
Code: Alles auswählen
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> listA = ["A", "B", "C", "D"]
>>> listB = [1, 2, 3, 4]
>>> want=zip(listA,listB)
>>> want
[('A', 1), ('B', 2), ('C', 3), ('D', 4)]
>>>
Und was mach ich jetzt in Python 3.x.x.x?
Re: Listen kombinieren und verschachteln
Verfasst: Freitag 4. Mai 2012, 22:24
von BlackJack
@woody55: Das Objekt mit der `__next__()`-Methode ist iterierbar und die `list()`-Funktion erstellt Listen aus den Elementen von iterierbaren Objekten.
Re: Listen kombinieren und verschachteln
Verfasst: Freitag 4. Mai 2012, 22:26
von woody55
@webspider und @blackjack: vielen Dank für eure geniale und rasche Hilfe!
Ihr liegt beide richtig!!!
Damit funktionierts auch unter Python 3!
Vielen Dank für die Hilfe!!!