Lo que estoy buscando es la mejor manera de decir: 'Si esta lista es demasiado corta, estírela a 9 elementos y agregue' Opción 4 ',' Opción 5 ', etc, como los elementos adicionales. Además, reemplace cualquier elemento 'Ninguno' con 'Elección x'. ' Está bien reemplazar "" y 0 también.La manera más piadosa de extender una lista potencialmente incompleta
Un ejemplo sería la transformación
['a','b',None,'c']
a
['a','b','Choice 3','c','Choice 5','Choice 6','Choice 7','Choice 8','Choice 9']
Mi código inicial abusado try/excepto y ha habido un error off-by-one No me di cuenta; gracias a joeforker y a todos los que lo señalaron. Sobre la base de los comentarios que he intentado dos soluciones cortas que ponen a prueba igualmente 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)
y
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))
Creo # 2 victorias como más Pythonic, así que es el que voy a utilizar. Es fácil de entender y utiliza construcciones comunes. Dividir los pasos es lógico y facilitaría que alguien lo entienda de un vistazo.
Al responder a esto, no cometa el error de numeración de elección 0! – joeforker
Si una opción era la cadena vacía "" o 0, ¿le gustaría mostrarla al usuario, o le gustaría tratarla de la misma manera que Ninguna? – joeforker