2009-08-27 3 views
67

나는 파이썬으로 목록을 가지고 있으며 어떤 요소가 부정적인지 확인하려고합니다. Specman을가 않습니다 목록에 대한 has() 방법이 있습니다 it 차례로리스트의 각 요소에 매핑 된 Specman을 키워드입니다목록의 모든 요소에 대해 조건이 성립 하는지를 확인하는 Pythonic 방식

x: list of uint; 
if (x.has(it < 0)) { 
    // do something 
}; 

.

이 점은 다소 우아합니다. Python documentation을 살펴본 결과 비슷한 것을 찾을 수 없었습니다. 내가 생각해 낼 수있는 가장 좋은 점은 다음과 같습니다.

if (True in [t < 0 for t in x]): 
    # do something 

나는이 점잖은 것을 알게되었습니다. 파이썬에서 더 좋은 방법이 있나요?

답변

118

any() : 또한

if any(t < 0 for t in x): 
    # do something 

, 당신이 O를하지 않도록 "에 ... 참"을 사용하여 그것을 발전기 식을 만들려고하는 경우 (N) 메모리 :

if True in (t < 0 for t in x): 
22

any()을 사용하십시오.

if any(t < 0 for t in x): 
    # do something 
9

파이썬에는 정확하게이 목적으로 any() 함수가 내장되어 있습니다.

+0

2.5 이상. 그렇지 않으면 어쩌면 ifilter와 예외를 사용하거나 bool (set (x는 if if x if cond))) 등과 같은 함수를 만들어야합니다. –

+1

복잡한 ifilter 일을하는 것보다는 다음과 같이하면됩니다 : def any (it) : 그것에 대한 엘 : if el : return True; False를 반환합니다. – Rory

관련 문제