2010-09-08 7 views
1

Possible en double:
How do you split a list into evenly sized chunks in Python?Conversion de la liste des tuples à la liste des listes de tuples

Je liste de tuples, chaque tuple a deux éléments (le montant de tuples peut varier).

[(a, b), (c, d)...)] 

Je veux convertir la liste à une liste imbriquée de tuples de sorte que chaque liste imbriquée contient 4 tuples, si la quantité est non divisible par 4 par exemple la liste originale de tuples 13 alors la liste finale devrait contenir le montant des restes dans le cas de 13, 1 tuple.

[[(a, b), (c, d), (e, f), (g, h)], [(a, b), (c, d), (e, f), (g, h)]...] 

L'une des choses sur python I love est les méthodes et concepts pour la conversion entre les différentes structures de données, j'espérais qu'il pourrait y avoir une telle méthode ou construire pour ce problème qui serait plus pythonique alors ce Iv venir avec.

image_thumb_pairs = [(a, b), (c, d), (e, f), (g, h), (i, j)] 
    row = [] 
    rows = [] 
    for i, image in enumerate(image_thumb_pairs): 
     row.append(image) 
     if(i+1) % 4 == 0: 
      rows.append(row) 
      row = [] 
    if row: 
     rows.append(row) 

Répondre

2
>>> lst = [(1,2), (3,4), (5,6), (7,8), (9,10), (11,12), (13, 14), (15, 16), (17, 18)] 
>>> [lst[i:i+4] for i in xrange(0, len(lst), 4)] 
[[(1, 2), (3, 4), (5, 6), (7, 8)], [(9, 10), (11, 12), (13, 14), (15, 16)], [(17, 18)]] 
Questions connexes