1

lineは、"Chicago Sun 01:52"とする。アスタリスクは* a、b、c = line.split()で何をしますか?

*a, b, c = line.split()は何をしますか?特に、アスタリスクの意味は何ですか?

編集:それをテストしたら、それは"Chicago""Sun""01:52"はすべてabcに格納されているように思えます。アスタリスクは、"Chicago"がリストの最初の要素としてaに格納されているように見えます。したがって、a = ["Chicago"],b = "Sun"およびc = "01:52"があります。この状況でアスタリスク演算子の機能に関する重要な情報を誰かが指摘できましたか?空白によってテキストがあなたを与えるだろう

+0

これを試してみると、変数には何が表示されますか? – Barmar

+2

文書を参照してください。[PEP 3132 - 拡張Iterable開梱](https://www.python.org/dev/peps/pep-3132/) – AChampion

+0

アスタリスクは、任意の長さのものを意味します(スターアンパックと呼ばれます)。 'line.split()'メソッドの最後の3つの要素まで – Mangohero1

答えて

3

分割は:

In [743]: line.split() 
Out[743]: ['Chicago', 'Sun', '01:52'] 

さて、これは3要素listです。割り当ては出力の最後の2つの要素を取り、それぞれbcに割り当てます。 *またはスプラットオペレータは、そのリストの残りをaに渡すので、aは要素のリストです。この場合、aは単一要素リストです。

In [744]: *a, b, c = line.split() 

In [745]: a 
Out[745]: ['Chicago'] 

In [746]: b 
Out[746]: 'Sun' 

In [747]: c 
Out[747]: '01:52' 

PEP 3132を見て、Where are python's splat operators * and ** valid?スプラット演算子の詳細については、彼らがどのように動作するか、どこが該当しています。

関連する問題