조건이 목록의 요소에 대해 유지되는지 확인하는 Pythonic 방법


111

Python에 목록이 있고 요소가 음수인지 확인하고 싶습니다. Specman에는 다음 has()을 수행하는 목록에 대한 방법이 있습니다.

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

it목록의 각 요소에 차례로 매핑되는 Specman 키워드는 어디에 있습니까 ?

나는 이것이 다소 우아하다고 생각합니다. 파이썬 문서를 살펴 봤는데 비슷한 것을 찾을 수 없었습니다. 내가 생각 해낼 수있는 최선은 :

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

나는 이것이 다소 우아하지 않다고 생각합니다. Python에서이 작업을 수행하는 더 좋은 방법이 있습니까?

답변:


187

any () :

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

또한 "True in ..."을 사용하려면 O (n) 메모리를 사용하지 않도록 생성기 표현식으로 만드십시오.

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

1
수정 :을 사용하려는 경우 True in ...다시 고려하고 any대신 사용하십시오.
Aran-Fey


10

파이썬에는 정확히 이러한 목적을 위해 any () 함수 가 내장되어 있습니다.


2.5+ 만 해당. 그렇지 않으면 ifilter 및 예외를 사용하거나 bool (set ((x for x if cond))) 등을 사용하여 함수를 만들어야합니다.
Gregg Lind

1
복잡한 ifilter가 아니라 다음을 수행하십시오. def any (it) : for el in it : if el : return True; False 반환
Rory
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.