Je veux diviser ma liste en lignes qui ont toutes le même nombre de colonnes, je cherche la meilleure façon (la plus élégante/pythonique) d'y parvenir :Python: diviser la liste en blocs de taille définie et remplir le reste
>>> split.split_size([1,2,3], 5, 0)
[[1, 2, 3, 0, 0]]
>>> split.split_size([1,2,3,4,5], 5, 0)
[[1, 2, 3, 4, 5]]
>>> split.split_size([1,2,3,4,5,6], 5, 0)
[[1, 2, 3, 4, 5], [6, 0, 0, 0, 0]]
>>> split.split_size([1,2,3,4,5,6,7], 5, 0)
[[1, 2, 3, 4, 5], [6, 7, 0, 0, 0]]
C'est ce que je suis venu avec à ce jour:
def split_size(l, size, fillup):
"""
splits list into chunks of defined size, fills up last chunk with fillup if below size
"""
# len(l) % size or size
# does i.e. size=5: 3->2, 4->1, 5->0
stack = l + [fillup] * (size - (len(l) % size or size))
result = []
while len(stack) > 0:
result.append(stack[:5])
del stack[:5]
return result
Je suis sûr qu'il doit y avoir des solutions plus intelligentes. Surtout pour la partie "mod inverse": len (l)% taille ou taille il faut être un moyen plus lisible de le faire, non?
double: http://stackoverflow.com/questions/312443/how-do-you-split-a-list-into-evenly-sized -chunks-in-python – volting
duplication possible de [Quelle est la manière la plus "pythonique" d'itérer sur une liste en morceaux?] (http://stackoverflow.com/questions/434287/what-is-the-most-pythonic -way-to-iterate-over-a-list-in-chunks) – NullUserException
@Volting: J'ai vu cette autre question, elle est liée mais pas la même parce que je veux spécifier la taille de chaque split. – hansaplast