Ho una lista di più interi e stringhe ['-200', '0', '200', '400', 'verde', '0', '0', '200', '400', ' yellow ',' 200 ',' 0 ',' 200 ',' 400 ',' red '] Ho difficoltà a separare la lista ogni 5 elementi e creare una nuova lista con solo 5 elementi all'interno. Tuttavia, non voglio 3 liste diverse, ne voglio solo una che cambi ogni volta che passa un nuovo 5 elementi.Come si può dividere un elenco ogni x elementi e aggiungere la quantità x di elementi a un nuovo elenco?
8
A
risposta
19
si desidera qualcosa di simile:
composite_list = [my_list[x:x+5] for x in range(0, len(my_list),5)]
print (composite_list)
uscita:
[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']]
Che cosa si intende per una "nuova" 5 elementi?
Se si desidera aggiungere a questa lista si può fare:
composite_list.append(['200', '200', '200', '400', 'bluellow'])
1
si potrebbe fare in una sola frase come
>>> import math
>>> s = ['-200', ' 0', ' 200', ' 400', ' green', '0', '0', '200', '400', ' yellow', '200', '0', '200', '400', ' red']
>>> [s[5*i:5*i+5] for i in range(0,math.ceil(len(s)/5))]
L'uscita dovrebbe essere:
[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']]
0
Penso che dovrai creare 1 nuova lista, ma se ho capito bene, vuoi una lista annidata con 5 elementi in ogni sottolista.
si potrebbe provare la seguente:
l = ['-200', ' 0', ' 200', ' 400', ' green', '0', '0', '200', '400', ' yellow', '200', '0', '200', '400', ' red']
new = []
for i in range(0, len(l), 5):
new.append(l[i : i+5])
Questo farà un passo attraverso la vostra prima lista, 'l', e il gruppo 5 elementi insieme in un elenco secondario nella nuova. Uscita:
[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']]
Spero che questo aiuti
dispiace ~ comprendono male. Lo aggiorneremo immediatamente. – Sheng