J'essaie de créer une liste de gammes à partir d'une liste plate de chiffres. Cela fonctionne lorsqu'il est en boucle via une gamme simple, mais lorsque vous essayez de boucler une liste personnalisée, il offre des sublistes vides. Je viens de commencer mon aventure python, ne soyez pas cruel;) Toute aide serait très appréciée.
La sortie attendue est de la liste [0, 1, 2] code> ->
[[0], [0, 1], [0, 1, 2]] code> p>
3 Réponses :
ne surchargez pas ceci:
>>> a = [0,1,2] >>> [list(range(n+1)) for n in a] [[0], [0, 1], [0, 1, 2]]
Il est plus sûr de conserver la liste d'enferçage à l'intérieur de la fonction et de le renvoyer à partir de la fonction: sortie: p> [[0],[0,1],[0,1,2]]
Utilisez le tranchant au cas où votre liste n'est pas des entiers:
avec des chaînes p> sortie: p> et avec l = [0,1,2] p> sortie: p> ou la liste des entiers est en ordre non ascendant: p> sortie: p>
Ce serait génial si vous pouviez inclure la production attendue.
Vous avez défini
a code> comme
[1, 2] code>, puis jetez-le et utilisez
a code> comme
0 code> via
9 code> à partir d'une plage code> code>. Vouliez-vous que cela soit basé sur
[1, 2] code> ou
plage (10) code>? De toute façon, vous devez éviter de réutiliser des noms variables car il va simplement vous confondre; Changer la variable de boucle en
i code> (il est donc soit
pour i in gamme (10): code> ou
pour i dans un: code>, puis
Makerange (i) code> sera beaucoup moins déroutant.
ne peut pas reproduire:
[[], [0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0 , 1, 2, 3, 4, 5, 6, 7, 8]] code>
BTW:
b.append (liste (plage (0, n, 1))) code> =>
b.append (liste (plage (n))) code>
Sortie attendue effectuée et le résultat est maintenant correct
pour une plage (10) code> n'a aucun sens avec votre sortie attendue.