次のようなリスト内包表記を作成できます。これは、値とその理由 (または空のリスト) を返し、それが悪い理由を示します。
def why_bad(value):
reasons = []
if value % 2:
reasons.append('not divisible by two')
return reasons
all_values = [1,2,3]
bad_values = [(i, why_bad(i)) for i in all_values]
print bad_values
例を拡張するために、値が不適切である理由についての条件チェックごとに elif を追加し、それをリストに追加することができます。
戻り値:
[(1, ['not divisible by two']), (2, []), (3, ['not divisible by two'])]
ただし、 all_values に一意の値しかない場合は、リスト内包表記ではなく辞書を作成することを検討してください。
>>> bad_values = dict([(i, why_bad(i)) for i in all_values])
>>> print bad_values
{1: ['not divisible by two'], 2: [], 3: ['not divisible by two']}