6 votes

Concatène la chaîne de caractères si la condition est remplie, sinon ne fait rien

Je veux concaténer plusieurs chaînes de caractères ensemble, et ajouter la dernière seulement si une condition booléenne est vraie. Comme ceci (a, b et c sont des chaînes de caractères) :

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

Mais Python n'aime pas ça. Existe-t-il un moyen agréable de le faire sans l'option else ?

Merci ! :)

8voto

Skycc Points 2539

Essayez quelque chose ci-dessous sans utiliser else il fonctionne en indexant la chaîne vide lorsque la condition est fausse (0) et en indexant la chaîne c lorsque la condition est vraie (1)

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

je ne sais pas pourquoi vous voulez éviter d'utiliser else, sinon, le code ci-dessous semble plus lisible

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

3voto

hspandher Points 8526

Cela devrait fonctionner pour les scénarios simples -

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

1voto

Fejs Points 1921

C'est possible, mais ce n'est pas très pythique :

something = a + b + c * condition

Cela fonctionnera parce que condition * False retournera '' alors que condition * True retournera l'original condition . Cependant, vous devez être prudent ici, condition pourrait également être 0 o 1 mais tout nombre supérieur ou tout littéral brisera le code.

0voto

Gwidryj Points 385

Existe-t-il un moyen agréable de le faire sans le sinon option ?

Eh bien, oui :

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

Mais je ne sais pas si vous voulez dire littéralement sans autre chose, ou sans l'ensemble de la déclaration if.

0voto

Abhay Prakash Points 11
a_list = ['apple', 'banana,orange', 'strawberry']
b_list = []

for i in a_list:
    for j in i.split(','):
        b_list.append(j)

print(b_list)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X