Listen gruppieren

Code-Stücke können hier veröffentlicht werden.
Antworten
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
Antworten