У меня есть общий вопрос о лучшей практике Python. Код ниже возвращает тот же вывод, но какой стиль рекомендуется и эффективен.

if val1 in string1:
    return 'Yes'
if val2 in string1:
    return 'Yes'
if val3 in string1:
    return 'Yes'

lists=[val1,val2,val3]
for l in lists:
    if l in string1:
        return 'Yes'

if val1 in string1 or val2 in string1 or val3 in string1:
    return 'Yes'
0
Eric G 26 Июн 2019 в 04:54

3 ответа

Лучший ответ

Я бы пошел с вариантом D.

if any(val in string1 for val in [val1, val2, val3]):
    return 'Yes'
5
John Kugelman 26 Июн 2019 в 01:59

Полностью зависит от контекста

Первый вариант определенно имеет много избыточного кода и плохо масштабируется, если увеличивается число vals (val4 ...), которое вы хотите проверить

Если вы думаете, что вы всегда будете проверять только 3 значения (val1, val2, val3), ваше решение будет выглядеть чище

Но второй вариант рекомендуется. Если вы думаете, что вы будете проверять дополнительные значения, вы можете легко добавить записи в массив / список и выполнить итерацию.

2
sun_dare 26 Июн 2019 в 02:03

Я бы, вероятно, рекомендовал бы использовать цикл for, потому что синтаксис читается большинством начинающих, и он короткий. Вы можете легко редактировать цикл for, если хотите добавить больше или удалить больше элементов.

1
Roshan 26 Июн 2019 в 02:17