반응형
목록의 모든 항목이 없음인지 확인하는 방법은 무엇입니까?
In [27]: map( lambda f,p: f.match(p), list(patterns.itervalues()), vatids )
Out[27]: [None, <_sre.SRE_Match object at 0xb73bfdb0>, None]
목록은 전부 None
이거나 그 중 하나가 re.Match 인스턴스 일 수 있습니다 . 반환 된 목록에서 내용물이 모두 있음을 알리기 위해 어떤 라이너 검사를 수행 할 수 None
있습니까?
all(v is None for v in l)
의 True
모든 요소 l
가None
참고 l.count(None) == len(l)
훨씬 빨리하지만해야 l
실제 수 list
및 단지 반복 가능한 없음.
not any(my_list)
의 True
모든 항목 my_list
이 거짓 이면 반환 합니다 .
편집 : 일치 개체는 항상 trucy이고 허위이기 때문에 당면한 경우와 None
동일한 결과를 제공합니다 all(x is None for x in my_list)
. gnibbler의 답변 에서 보여 주듯이 사용 any()
은 훨씬 더 빠른 대안입니다.
Match 개체는 절대로 false로 평가되지 않기 때문에 괜찮습니다. not any(L)
$ python -m timeit -s"L=[None,None,None]" "all( v is None for v in L )"
100000 loops, best of 3: 1.52 usec per loop
$ python -m timeit -s"L=[None,None,None]" "not any(L)"
1000000 loops, best of 3: 0.281 usec per loop
$ python -m timeit -s"L=[None,1,None]" "all( v is None for v in L )"
100000 loops, best of 3: 1.81 usec per loop
$ python -m timeit -s"L=[None,1,None]" "not any(L)"
1000000 loops, best of 3: 0.272 usec per loop
또는 약간 이상하지만 :
a = [None, None, None]
set(a) == set([None])
또는:
if [x for x in a if x]: # non empty list
#do something
편집 :
def is_empty(lVals):
if not lVals:
return True
for x in lVals:
if x:
return False
return True
is_all_none = lambda L: not len(filter(lambda e: not e is None, L))
is_all_none([None,None,'x'])
False
is_all_none([None,None,None])
True
참고 URL : https://stackoverflow.com/questions/6518394/how-to-check-if-all-items-in-the-list-are-none
반응형
'programing' 카테고리의 다른 글
Haskell ID 기능에 사용 (0) | 2020.12.06 |
---|---|
순수 JPA 설정에서 데이터베이스 연결 얻기 (0) | 2020.12.06 |
Java의 epoch (1970-01-01)에서 밀리 초를 어떻게 얻습니까? (0) | 2020.12.06 |
ASP.Net MVC Identity 2에서 암호 유효성 검사를 변경하는 방법은 무엇입니까? (0) | 2020.12.06 |
RabbitMQ에 Nodedown 오류가 있습니다. (0) | 2020.12.06 |