Liste elegant aufteilen

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
Lufia
User
Beiträge: 83
Registriert: Samstag 13. Mai 2006, 10:04
Wohnort: Berlin

Donnerstag 22. Januar 2009, 13:43

Hi, ich habe leider nichts passendes gefunden. Ich möchte eine Liste wie folgt unterteilen:

Code: Alles auswählen

[1,2,3,4,5,6,7,8,9]

[[1,2,3],[4,5,6],[7,8,9]]
zur Zeit mache ich das mit einer hässlichen Schleife, geht das nicht eleganter?

Freue mich über jegliche verschönerung, danke!
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Donnerstag 22. Januar 2009, 13:51

Kommt jetzt drauf an, ob du die Liste dritteln willst, oder immer 3er-Pärchen erstellen willst.

Code: Alles auswählen

liste = range(1,10)
print [liste[i:i+3] for i in xrange(0, len(liste), 3)]
Benutzeravatar
hendrikS
User
Beiträge: 420
Registriert: Mittwoch 24. Dezember 2008, 22:44
Wohnort: Leipzig

Donnerstag 22. Januar 2009, 14:48

Use slices:

Code: Alles auswählen

l=[1,2,3,4,5,6,7,8,9]
l=[l[:3],l[3:6],l[6:]]
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

Donnerstag 22. Januar 2009, 15:11

itertools ist dein Freund:

Aus der Doku:

Code: Alles auswählen

def grouper(n, iterable, fillvalue=None):
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)
Gruß,
Manuel
Lufia
User
Beiträge: 83
Registriert: Samstag 13. Mai 2006, 10:04
Wohnort: Berlin

Donnerstag 22. Januar 2009, 15:14

Besten Dank!... Da habe ich ja einiges zum ausprobieren. Ich hatte mir schon gedacht das es mit Python eleganter geht. Es ist ahlt nur manchmal schwer da drauf zu kommen.
Antworten