То, что я ищу, - лучший способ сказать: «Если этот список слишком короткий, удлините его до 9 элементов и добавьте« Выбор 4 »,« Выбор 5 »и т. Д. В качестве дополнительных элементов. Также замените все элементы «None» на «Choice x». Можно заменить "" и 0 тоже.
Примером преобразования будет
['a','b',None,'c']
до
['a','b','Choice 3','c','Choice 5','Choice 6','Choice 7','Choice 8','Choice 9']
В моем исходном коде неправильно использовалась попытка / исключение и произошла ошибка, которую я не заметил; спасибо Joeforker и всем, кто указал на это. На основании комментариев я попробовал два коротких решения, которые одинаково хорошо тестируют:
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)
и
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))
Я думаю, что # 2 побеждает как более питонический, поэтому я буду использовать его. Это легко понять и использует общие конструкции. Разделение шагов логично и облегчает понимание с первого взгляда.