2017-07-12 14 views
1

私はちょうどPythonを学び始めました。私は変数を宣言する前に*を使った例に従っていました。私の質問は、これを使う目的は何かということです。 例は、私がによって作られた辞書を、取得変数を印刷した後なぜ* Pythonで変数を宣言する前に使用

for i in range(n): 
    name, *l = input().split() 
    s = list(map(float, l)) 
    a[name] = s 

を次しています。しかし、なぜl * l変数の前に使われたのか理解できません。

+4

それはリストに残りのデータを開梱のためです。 –

答えて

4

python 3で紹介された新しいアンパックフィーチャー、スターアンパックまたはextended iterable unpackingです。

あなたは

name, *l = input().split() 

を行う際splitの結果は2部に分かれています。

  • nameはリスト
  • lの最初の要素はリストの残りの部分を取得します取得します(浮動小数点数)

name 0.0 1.0 2.0 3.0 

splitセット"name"からname、およびl["0.0", "1.0", "2.0", "3.0"]を取る:あなたはこのようなラインを持っています。 lは、浮動小数点のリストに変換されます。list(map(float ...

nameを値として浮動小数点数のリストとして使用します。別に

:あなたのループは、以下のような辞書の理解に要約することができます。

a = {name:list(map(float,l)) for name, *l in (input().split() for _ in range(n))} 
+0

ありがとう。それは今@ジャーンだ。 – Amir

関連する問題