Python: конкат строка если условие, иначе ничего не делать

Я хочу объединить несколько строк вместе и добавить последнюю, только если логическое условие истинно. Вот так (A, b и c-строки):

something = a + b + (c if <condition>)

но Python это не нравится. Есть ли хороший способ сделать это без опции еще?

спасибо! :)

4 ответов


попробуйте что-то ниже, не используя else, он работает путем индексирования пустой строки при условии False (0) и индексирования строки c когда условие True (1)

something = a + b + ['', c][condition]

Я не уверен, почему вы хотите избежать использования других, иначе код ниже кажется более читаемым

something = a + b + (c if condition else '')

Это должно работать для простых сценариев -

something = ''.join([a, b, c if condition else ''])

это возможно, но это не очень Pythonic:

something = a + b + c * condition

это будет работать, потому что condition * False вернутся '', а condition * True возвращает оригинал condition. Однако здесь вы должны быть осторожны,condition также может быть 0 или 1, но любое большее число или любой литерал нарушат код.


есть ли хороший способ сделать это без другое?

Ну, да:

something = ''.join([a, b])
if condition:
    something = ''.join([something, c])

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