オプションで、Pythonでelseステートメントなしでリストに1つの要素を含めることはできますか?

Source python list syntax

私はあなたがPythonでこのようなことをすることができることを知っています:
>>> conditional = False
>>> x = [1 if conditional else 2, 3, 4]
[ 2, 3, 4 ]

しかし、私はどのようにこのようなことをしますか?
>>> conditional = False
>>> x = [1 if conditional, 3, 4]
[ 3, 4 ]

つまり、1を別の番号に置き換えたくありません。 conditionalがfalseの場合は、単に省略したいと思います。
推奨答え
連結を使用する:
x = ([1] if conditional else []) + [3, 4]

つまり、オプションの要素が含まれているか、空のサブリストを生成します。

デモ:
>>> conditional = False
>>> ([1] if conditional else []) + [3, 4]
[3, 4]
>>> conditional = True
>>> ([1] if conditional else []) + [3, 4]
[1, 3, 4]

もちろん、この概念はより多くの要素に対しても機能します。
x = ([1, 2, 3] if conditional else []) + [4, 5, 6]
その他答え 1
あなたはスライスでそれを行うことができます
x = [1, 3, 4][not conditional:]

例えば
>>> conditional = False
>>> [1, 3, 4][not conditional:]
[3, 4]
>>> conditional = True
>>> [1, 3, 4][not conditional:]
[1, 3, 4]
その他答え 2
Python 3.5以降のhttps://stackoverflow.com/a/18988829/1093967よりもわずかに高速です(PEP-448によって導入された追加のアンパックの一般化を活用):
>>> timeit("([1, 2, 3] if True else []) + [4, 5, 6]")
0.10665618600614835
>>> timeit("[*([1, 2, 3] if True else []), 4, 5, 6]")
0.08992647400009446
その他答え 3
本当にelseを避けたい場合は、リストアイテムのジェネレーターを作成できます。
def gen_x(conditional):
    if conditional:
        yield 1
    for v in [3, 4]:
        yield v

または、since Python 3.3:
def gen_x(conditional):
    if conditional:
        yield 1
    yield from [3, 4]

その後:
x = list(gen_x(conditional))

関連記事

C#形式でスクロールバーを追加する方法
zzzまでaaaaa ababを出力するphpアルゴリズム
パンダプロットの何が問題になっていますか?
特定の値の関数を作成するときのpython / numpyのAttributeError
matplotlibプロットの上に目盛りラベルを表示する方法は?