2012-11-10 3 views
2

에 사용 "모든 경우에"왜이 일파이썬

for td in alltd: 
    if "style3" in td["class"] or "style4" in td["class"] or "style1" in td["class"]: 
     td["class"] = "s1" 

이되지?

for td in alltd: 
    if all(x in td["class"] for x in ("style3", "style4", "style1")): 
     td["class"] = "s1" 
+5

'all()'을 사용하면 모든 문장 사이에 'and'를 넣는 것과 같기 때문입니다. 위의 if 문의 동작을 복제하려면'any()'를 사용하십시오. –

+2

'all'을 사용하기 위해서는'any' 표현식을 무효화하고 수량 한정자에 대해 부정을 배포해야합니다 :'not all (x는 td [ "class"]에 없습니다 ...). 이 경우 어리석은 일 이겠지만 테스트에서 논리적 인 부정 (예 :'! =')이 표시되면 양식을 전환하는 것이 더 간단 할 수 있습니다. – eryksun

답변

11

all([x1,x2,...])x1 and x2 and ...와 같은 기본적 and contition하지.

>>> any([True,False]) 
True 
6

사용 any() 당신이 or 기반 comaparison하고있는 경우 :

`if any(x in td["class"] for x in ("style3", "style4", "style1")):` 

에 대한 도움말 (반복 가능) 하나를

반환 사실이 반복자의 요소에 해당하는 경우를 . #의 즉 or 조건 모두 (반복 가능)

도움말 다음 반복자의 모든 요소에 해당하는 경우

true를 돌려줍니다. #의 즉 x1 or x2 or ...

>>> all([True, True]) 
True 
>>> all([True, False]) 
False 

사용 any() 대신