파이썬 코드에 문제가 있습니다.하지만 다른 언어로 이미 접했던 문제입니다. 일반적인 대답을 원합니다.루프에서 조건문 최적화/중복 된 코드 제거하는 방법
많은 문을 포함하는 루프가 있다고 가정 해 보겠습니다. 이러한 명령문 중 하나는 반복을 통해 변경되지 않는 조건에 따라 달라집니다.
for ... :
... #many statements
if conditionA :
statementA
elif conditionB :
statementB
else
statementC
나 : 내가 이것을 구현하는 두 가지 방법으로 볼 수있는 최초의 솔루션에서
if conditionA :
for ... :
... #many statements
statementA
elif conditionB :
for ... :
... #many statements
statementB
else :
for ... :
... #many statements
statementC
을, 문제는 우리가 필요하지 않습니다 각 반복에서 뭔가를 테스트하는 것입니다. 두 번째 솔루션은 조건을 한 번 테스트 한 다음 이에 따라 루프를 시작하기 때문에 속도가 향상됩니다. 하지만 지금은 많은 코드 복제가 있습니다 (많은 문장이 매회 다시 작성됩니다 ...).
두 번째 코드만큼 효율적일 것이라고 생각하지 못한 세 번째 방법이 있습니까? 코드 중복이 없습니까? 감사!
편집 :
내가 C++ 컴파일러는 이미 (컴파일하는 동안 두 번째로 첫 번째 버전을 변환하여) 최적화를 수행하는 것이 비슷한 주제 (Optimizing a Loop vs Code Duplication)를 참조하십시오. 파이썬과 같은 해석 언어는 어떻습니까?
이 조건이 상당히 부담이 있습니까 감소, 지금
:
위 내 코드에서 '다른'에서이 작업을 수행 시험 할까? 그렇다면 루프 내에서 루프를 반복적으로 테스트하지 않아도되도록 변수에 결과를 할당 할 수 있습니다. – khelwood
루프 전에 'conditionA' 및'conditionB'의 값을 계산할 수 없습니까? –
당신의 조건이 O (1)가 아니라면, * 시간 복잡성 *은 루프가 조건 안에 있는지 또는 그 반대인지에 관계없이 동일합니다. 당신은 단지 "속도"에 대해 그것을 오용하고있을 가능성이 큽니다. – spectras