2017-07-12 129 views
1

我剛開始學習python。我在聲明一個變量之前已經使用過*的例子。我的問題是,使用這個的目的是什麼。 實施例,我下面爲什麼在python中聲明變量之前使用

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

打印變量I得到一個詞典,其通過由後。但不明白爲什麼*使用之前l變量

+4

它是開箱其餘數據到一個列表。 –

回答

4

這是python 3中引入的新的拆包功能,稱爲星形拆包或extended iterable unpacking

當你做

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

split結果兩個部分劃分:

  • name獲取列表
  • l的第一個元素獲取列表的其餘部分(中漂浮物)

所以假設你有這樣一行:

name 0.0 1.0 2.0 3.0 

splitname"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

非常感謝。現在明白了@Jean。 – Amir

相關問題