我刚开始学习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
它是开箱其余数据到一个列表。 –