単体(*
)演算子がイテレータ/リスト/タプルを含む式で使用できない理由について誰にも分かっていますか?Python:PythonのSplat/unpack演算子*は式で使用できません。
なぜ機能のアンパックに限定されますか?私はそれを考えて間違っていますか?例えば
は:
>>> [1,2,3, *[4,5,6]]
File "<stdin>", line 1
[1,2,3, *[4,5,6]]
^
SyntaxError: invalid syntax
なぜ*
オペレータない:
[1, 2, 3, *[4, 5, 6]] give [1, 2, 3, 4, 5, 6]
は*
演算子は関数で使用されたときに呼び出すのに対し、それが展開ん
f(*[4, 5, 6]) is equivalent to f(4, 5, 6)
類似点は+
ですリストを使用する場合は*
ですが、別のタイプのリストを拡張する場合は使用できません。例えば
:
# This works
gen = (x for x in range(10))
def hello(*args):
print args
hello(*gen)
# but this does not work
[] + gen
TypeError: can only concatenate list (not "generator") to list
あなたはその使用法から何を期待していますか?つまり、なぜあなたはそれをしたいのですか? – Lafexlos
OK質問を更新する – Har
2つの別々の質問のように見えます。最初の構文はもっと関連しています.2番目は 'list .__ add__'の動作です。 –