web-dev-qa-db-ja.com

条件の場合は文字列を連結し、それ以外の場合は何もしません

いくつかの文字列を連結し、ブール条件がTrueの場合にのみ最後の文字列を追加したいと思います。このように(a、b、cは文字列です):

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

しかし、Pythonはそれが好きではありません。elseオプションなしでそれを行う良い方法はありますか?

ありがとう! :)

11
lmaayanl

elseを使用せずに以下のことを試してください。条件False(0)の場合は空の文字列にインデックスを付け、条件True(1)の場合は文字列cにインデックスを付けます。

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

elseの使用を避けたい理由がわかりません。そうしないと、以下のコードが読みやすくなります。

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

これは単純なシナリオで機能するはずです-

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

可能ですが、それほどPythonicではありません。

something = a + b + c * condition

condition * False 戻ります ''、一方condition * Trueは元のconditionを返します。ただし、ここでは注意する必要があります。condition0または1ですが、数値やリテラルが大きいとコードが壊れます。

3
Fejs

elseオプションなしでそれを行う良い方法はありますか?

はい、そうです:

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

しかし、あなたが文字通り他のことなしを意味するのか、それともifステートメント全体を意味しないのかはわかりません。

1
Gwidryj
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)
0
Abhay Prakash