Если вы не возражаете заменить что-либо, что оценивается как False, на «Выбор% d», то result
работает для Python 2.4.
Если вы не возражаете и имеете Python 2.5 и выше, тогда используйте result2_5_plus
с троичной силой if
.
Если вы не любите или не можете использовать троичное выражение if, воспользуйтесь тем, что True == 1
и False == 0
, используя результат x is None
для индексации списка.
x = ["Blue", None, 0, "", "No, Yelloooow!"]
y = [None]*9
result = [(t or "Choice %d" % (i+1))\
for i, t in enumerate(x + y[len(x):])]
result2_5_plus = [(t if t is not None else "Choice %d" % (i+1))\
for i, t in enumerate(x + y[len(x):])]
result_no_ternary_if = [[t, "Choice %d" % (i+1)][t is None]\
for i, t in enumerate(x + y[len(x):])]
['Blue', 'Choice 2', 'Choice 3', 'Choice 4', 'No, Yelloooow!', 'Choice 6', 'Choice 7', 'Choice 8', 'Choice 9']
['Blue', 'Choice 2', 0, '', 'No, Yelloooow!', 'Choice 6', 'Choice 7', 'Choice 8', 'Choice 9']