Seite 1 von 1

Listen gruppieren

Verfasst: Montag 17. Dezember 2007, 19:38
von Leonidas
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.