我剛開始學習python。我在聲明一個變量之前已經使用過*的例子。我的問題是,使用這個的目的是什麼。 實施例,我下面爲什麼在python中聲明變量之前使用
for i in range(n):
name, *l = input().split()
s = list(map(float, l))
a[name] = s
打印變量I得到一個詞典,其通過由後。但不明白爲什麼*使用之前l變量
我剛開始學習python。我在聲明一個變量之前已經使用過*的例子。我的問題是,使用這個的目的是什麼。 實施例,我下面爲什麼在python中聲明變量之前使用
for i in range(n):
name, *l = input().split()
s = list(map(float, l))
a[name] = s
打印變量I得到一個詞典,其通過由後。但不明白爲什麼*使用之前l變量
這是python 3中引入的新的拆包功能,稱爲星形拆包或extended iterable unpacking。
當你做
name, *l = input().split()
的split
結果兩個部分劃分:
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))}
非常感謝。現在明白了@Jean。 – Amir
它是開箱其餘數據到一個列表。 –