Ce que je cherche est la meilleure façon de dire: «Si cette liste est trop courte, l'allonger à 9 éléments et ajouter« Choice 4 »,« Choice 5 », etc, comme les éléments supplémentaires. De même, remplacez les éléments 'None' par 'Choice x'. ' C'est ok pour remplacer "" et 0 aussi.La façon la plus pythonique d'étendre une liste potentiellement incomplète
Une transformation exemple serait
['a','b',None,'c']
à
['a','b','Choice 3','c','Choice 5','Choice 6','Choice 7','Choice 8','Choice 9']
Mon code initial abusé try/except et avait une erreur hors par un je n'ai pas remarqué; merci à joeforker et à tous ceux qui l'ont fait remarquer. Sur la base des commentaires que j'ai essayé deux solutions courtes qui testent aussi bien:
def extendChoices(cList):
for i in range(0,9):
try:
if cList[i] is None:
cList[i] = "Choice %d"%(i+1)
except IndexError:
cList.append("Choice %d"%(i+1)
et
def extendChoices(cList):
# Fill in any blank entries
for i, v in enumerate(cList):
cList[i] = v or "Choice %s" % (i+1)
# Extend the list to 9 choices
for j in range(len(cList)+1, 10):
cList.append("Choice %s" % (j))
Je pense # 2 victoires comme étant plus pythonique, il est donc celui que je vais utiliser. C'est facile à comprendre et utilise des constructions communes. Le fractionnement des étapes est logique et faciliterait la compréhension en un coup d'œil.
Lorsque vous répondez à cela, ne faites pas l'erreur de numérotation de choix 0! – joeforker
Si un choix était la chaîne vide "" ou 0 voudriez-vous la montrer à l'utilisateur, ou voudriez-vous la traiter de la même manière que None? – joeforker