условие приоритета в if-else для эффективности - PullRequest
0 голосов
/ 23 ноября 2018

Я хотел бы знать, есть ли у меня условие if-else или if-elif-elif -....- else, как показано ниже:

if conditionA:
    do A
elif conditionB:
    do B
elif conditionC:
    do C
...
...
...
else:
    do z

Q1.Если я уже знаю, что мое условие разрешается в conditionC в течение 99% времени, то в качестве первого условия вместо этого (conditionA) мой код станет более эффективным?

Q2.Точно так же я должен расставить приоритеты в моих высказываниях таким образом, если Q1 верен?

Извинения, если вопрос уже был задан.Возможно, я не нашел подходящего словаря для поиска этого.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Q.1 и Q.2: Да

Согласно документации Python

последовательность if… elif… elif… является заменой операторов switch или case, найденных вдругие языки.

, что означает, что как только код выполнит условие True, он выйдет из последовательности if… elif… elif….

0 голосов
/ 23 ноября 2018

Вы видите, что эти условия занимают O (1) времени, вы можете сказать, что они ничтожно малы по сравнению с другим кодом, который вы написали вместе с ним, например, если у вас есть код с двумя вложенными циклами O (п ^ 2) тогда условия занимают незначительное время по сравнению с вашим общим алгоритмом.

Более того, это говорит вам о предполагаемой сложности.

Но в других случаях я бы сказал, что вы должны поставить это условие А, потому что то, что вы ставите в этих условиях, может иметь соответствующие временные сложности.

предположим, что у вас есть поиск по подстроке с использованием оператора in в python, он выглядит следующим образом.

st = 'hello' * (2 ** 999) # hellohellohellohe...    

if 'hey' in st: 
    print('hey, I found it')

else:
    print('well..')

он занимает около θ (n) и O (MN), где mстрока и n - это подстрока, которую нужно сравнить.

посмотрите на эту подстроку python .

Итак, заверните это, предпочтительным способом будетэто при условии А.

...