J'ai une liste de plusieurs entiers et chaînes
['-200', ' 0', ' 200', ' 400', ' green', '0', '0', '200', '400', ' yellow', '200', '0', '200', '400', ' red']
Je ne parviens pas à séparer la liste tous les 5 elements
et à créer une nouvelle liste contenant seulement 5 éléments.
Cependant, je ne veux pas 3 listes différentes, je veux juste une liste qui change à chaque fois qu'un nouveau 5 elements
passe.
Vous voulez quelque chose comme:
composite_list = [my_list[x:x+5] for x in range(0, len(my_list),5)]
print (composite_list)
Sortie:
[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']]
Qu'entendez-vous par un "nouveau" 5 éléments?
Si vous souhaitez ajouter à cette liste, vous pouvez faire:
composite_list.append(['200', '200', '200', '400', 'bluellow'])
Vous pouvez le faire en une seule phrase comme
>>> 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))]
Ensuite, le résultat devrait être:
[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']]
Je pense que vous devrez créer une nouvelle liste, mais si je comprends bien, vous voulez une liste imbriquée avec 5 éléments dans chaque sous-liste.
Vous pouvez essayer ce qui suit:
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])
Cela fera défiler votre première liste, "l", et regroupera les éléments 5 dans une sous-liste de nouvelle. Sortie:
[['-200', ' 0', ' 200', ' 400', ' green'], ['0', '0', '200', '400', ' yellow'], ['200', '0', '200', '400', ' red']]
J'espère que cela t'aides