2012-07-12 2 views

답변

0

당신은 중첩 된 목록 이해 사용할 수 있습니다

bad_values = [value_tuple for value_tuple in 
        [(myvalue, why_bad(myvalue)) for myvalue in all_values] 
       if value_tuple[1]] # value_tuple[1] == why_bad(myvalue) 

또는 사용 filter :

bad_values = filter(lambda value_tuple: value_tuple[1], 
        [(myvalue, why_bad(myvalue)) for myvalue in all_values]) 
1

당신은 가치와 그 이유를 (반환이처럼 지능형리스트를 만들 수 있습니다 또는 빈 목록) :

예제를 확장하려면 값이 나쁜 이유에 대한 모든 조건부 검사에 대해 elif를 추가하여 목록에 추가하십시오.

RETURNS : all_values는 고유 한 값이있는 경우

[(1, ['not divisible by two']), (2, []), (3, ['not divisible by two'])] 

는하지만, 당신은 지능형리스트가 아닌 사전을 만드는 것이 좋습니다 수 있습니다

>>> 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']} 
0

꽤 있지만 중첩 지능형리스트를 시도 할 수 없음 :

bad_values = [(v, reasons) for v in all_values 
          for reasons in [why_bad(v)] if reasons]