문제

이 질문은 이미 여기에 답이 있습니다.

Python에서 IF 문을 사용하는 경우 "캐스케이드"를 올바르게 작동 시키려면 다음을 수행해야합니다.

if job == "mechanic" or job == "tech":
        print "awesome"
elif job == "tool" or job == "rock":
        print "dolt"

"Equals to"를 확인할 때 Python을 여러 값을 수용하게하는 방법이 있습니까? 예를 들어,

if job == "mechanic" or "tech":
    print "awesome"
elif job == "tool" or "rock":
    print "dolt"
도움이 되었습니까?

해결책

if job in ("mechanic", "tech"):
    print "awesome"
elif job in ("tool", "rock"):
    print "dolt"

괄호 안의 값은 튜플입니다. 그만큼 in 운영자는 왼쪽 항목이 오른쪽 핸들 튜플 내부 어딘가에 발생하는지 확인합니다.

파이썬이 in 연산자, 선형 검색을 수행합니다. 오른쪽에 많은 품목이있는 경우 성능 병목 현상이 될 수 있습니다. 이것을하는 더 큰 규모의 방법은 frozenset:

AwesomeJobs = frozenset(["mechanic", "tech", ... lots of others ])
def func():
    if job in AwesomeJobs:
        print "awesome"

사용 frozenset ~ 위에 set 프로그램 운영 중에 멋진 작업 목록을 변경할 필요가없는 경우 선호됩니다.

다른 팁

당신은 다음에서 사용할 수 있습니다 :

if job  in ["mechanic", "tech"]:
    print "awesome"

매우 많은 숫자를 확인할 때 확인할 품목 세트를 저장하는 것이 좋습니다. 예를 들어.

AwesomeJobs = set(["mechanic", "tech", ... lots of others ])
...

def func():
    if job in AwesomeJobs:
        print "awesome"
if job in ("mechanic", "tech"):
    print "awesome"
elif job in ("tool", "rock"):
    print "dolt"

나는 당신이 원하는 것을 직접 할 수 있다고 생각하지 않지만 한 가지 대안은 다음과 같습니다.

if job in [ "mechanic", "tech" ]:
    print "awesome"
elif job in [ "tool", "rock" ]:
    print "dolt"

일정한 항목을 가진 튜플은 컴파일 된 기능에서 상수로 저장됩니다. 그들은 단일 명령으로로드 될 수 있습니다. 반면에 목록과 세트는 각 실행마다 항상 새로 구성됩니다.

튜플과 목록은 모두 수술가를 선형 검색을 사용합니다. 세트는 해시 기반 조회를 사용하므로 더 많은 수의 옵션이 더 빠릅니다.

다른 언어에서는 스위치/선택 문을 사용하여 작업을 완료합니다. 파이썬에서도 그렇게 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top