2009-08-13 2 views
6

목록이 비어 있는지 또는 없음 만 포함하는지 확인하는 가장 간결한 방법은 무엇입니까?목록이 비어 있는지 또는 없음 만 포함하는지 확인하는 가장 간결한 방법은 무엇입니까?

가 나는 내가 할 수있는 이해 시험 :

if MyList: 
    pass 

과 : 목록 항목 (또는 여러 항목)을 가지고 있지만, 그 항목/S는 아무도 없습니다

if not MyList: 
    pass 

하지만 경우 :

MyList = [None, None, None] 
if ???: 
    pass 

답변

15

한 가지 방법은 all를 사용하는 것입니다 및 지능형리스트 :이뿐만 아니라 빈리스트 작동

if all(e is None for e in myList): 
    print('all empty or None') 

. 더 일반적으로, 목록은 False로 평가 것들을 포함되어 있는지 여부를 테스트하기 위해, 당신은 any 사용할 수 있습니다

a = [] 
b = [None, None, None] 
all(e is None for e in a) # True 
all(e is None for e in b) # True 
+2

'e is None'이어야합니다. – nikow

+0

아마도 더 효율적입니다. 그렇지만'=='를 사용하면 * wrong *가 아닙니다. – Stephan202

+0

작은 메모 : 실제로 모든 링크가 ... –

2

목록의 요소 중 참으로 평가되는 요소는 다음과 같습니다.

당신이 엄격하게 None 확인 위의 if 성명에서 filter(lambda x: x is not None, mylist) 대신 filter(None, mylist)을 사용하려면
if mylist and filter(None, mylist): 
    print "List is not empty and contains some true values" 
else: 
    print "Either list is empty, or it contains no true values" 

.

9

당신은 시험에 all() 기능을 사용할 수 있습니다 모든 요소가 없음 없습니다입니다 ==과 직접 비교할 수 있습니다.

if x == [None,None,None]: 

if x == [1,2,3] 
4

당신에게 :

if not any(myList): 
    print('all empty or evaluating to False') 
관련 문제