ここで「アンパック」は間違った語彙かもしれません-これは重複した質問であると確信しているため、謝罪します。
私の質問は非常に簡単です:アイテムのリストを期待する関数で、エラーを発生させずにPythonリストアイテムを渡すにはどうすればよいですか?
my_list = ['red', 'blue', 'orange']
function_that_needs_strings('red', 'blue', 'orange') # works!
function_that_needs_strings(my_list) # breaks!
確かにリストを展開し、蹄に関数'red','blue','orange'
を渡す方法がなければなりませんか?
function_that_needs_strings(*my_list) # works!
はい、*args
(スプラット)構文を使用できます。
function_that_needs_strings(*my_list)
ここで、my_list
は任意の反復可能です。 Pythonは、指定されたオブジェクトをループし、各要素を関数の個別の引数として使用します。
式の呼び出しドキュメント を参照してください。
同様に、2つの星を使用した同等のキーワードパラメータがあります。
kwargs = {'foo': 'bar', 'spam': 'ham'}
f(**kwargs)
そして、関数シグネチャでキャッチオール引数を指定するための 同等の構文 があります。
def func(*args, **kw):
# args now holds positional arguments, kw keyword arguments
Python 3.5以降では、無制限の量のlist
sをアンパックできます。
したがって、これは動作します:
a = ['1', '2', '3', '4']
b = ['5', '6']
function_that_needs_strings(*a, *b)