为什么在 Python 中声明变量时要使用“*”?

5

我刚开始学习Python。我正在跟随一个示例,其中在声明变量之前使用了*。我的问题是,使用这个符号的目的是什么?例如,我正在遵循:

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

打印变量后,我得到了一个字典,这个字典是由a生成的。但是我不明白为什么在l变量前面要使用*。


4
这是将剩余数据解包成列表的操作。 - Jean-François Fabre
1个回答

11

这是Python 3中引入的一项新的解包功能,称为星号(star)解包或扩展可迭代对象解包

当您执行以下操作时:

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"]。通过list(map(float ...l转换为浮点数列表。

然后使用name作为键,浮点数列表作为值。

附注:您的循环可以用字典推导式总结如下:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接