Listen gruppieren

Code-Stücke können hier veröffentlicht werden.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Listen gruppieren

Beitragvon Leonidas » Montag 17. Dezember 2007, 19:38

Servus,

Da ich so etwas schon am zweiten Tag in Folge brauche: ich wollte listen in gleich lange Teile zerlegen:

Code: Alles auswählen

def chunkize_lc(l, size):
    iterator = iter(l)
    lazy_values = [[iterator.next] * size for i in range(len(l) / size)]
    return [[inner() for inner in outer] for outer in lazy_values]

def chunkize_for(l, size):
    result = list()

    current_chunk = list()
    for index, item in enumerate(l):
        current_chunk.append(item)
        if index % size == size - 1:
            result.append(current_chunk)
            current_chunk = list()

    if current_chunk:
        result.append(current_chunk)

    return result

l = range(6)
print chunkize_lc(l, 2)
print chunkize_for(l, 2)
print chunkize_lc(l, 4)
print chunkize_for(l, 4)

Die erste Lösung ist etwas kürzer (und sieht lustiger aus), ignoriert aber überzählige Teile. Man könnte den ersten Ansatz aber etwas erweitern, wenn man das die von range generierte Liste verlängert und dann auf die `StopIteration`-Exception reagiert.
My god, it's full of CARs! | Leonidasvoice vs Modvoice

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder