2017-07-12 90 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

相关问题