Seite 1 von 1

Liste elegant aufteilen

Verfasst: Donnerstag 22. Januar 2009, 13:43
von Lufia
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!

Verfasst: Donnerstag 22. Januar 2009, 13:51
von Darii
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)]

Verfasst: Donnerstag 22. Januar 2009, 14:48
von hendrikS
Use slices:

Code: Alles auswählen

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

Verfasst: Donnerstag 22. Januar 2009, 15:11
von helduel
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

Verfasst: Donnerstag 22. Januar 2009, 15:14
von Lufia
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.