python - 为什么 * 在 python 中声明变量之前使用

标签 python python-3.x

<分区>

我刚开始学习python。我正在关注他们在声明变量之前使用 * 的示例。我的问题是使用它的目的是什么。 例如,我正在关注

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

打印变量后我得到一个字典,它是由 a.但是无法理解为什么 * 在 l 变量之前使用

最佳答案

这是 python 3 中引入的新解包功能,称为星形解包或 extended iterable unpacking .

当你这样做的时候

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

split 的结果分为两部分:

  • name 获取列表的第一个元素
  • l 获取列表的其余部分( float )

所以假设你有这样一行:

name 0.0 1.0 2.0 3.0

splitname设置为"name"l["0.0", “1.0”、“2.0”、“3.0”]l 通过 list(map(float ...

转换为 float 列表

然后 name 用作键, float 列表用作值。

另外:你的循环可以用字典理解来总结,如下所示:

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

关于python - 为什么 * 在 python 中声明变量之前使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45062375/

相关文章:

python - MonkeyPatch警告: Monkey-patching ssl after ssl has already been imported may lead to errors

python 3.5 在 statsmodels ImportError : cannot import name '_representation'

python - 将字典中的列表转换为系列

python - 在 Python 中使用 numpy.random.choice 更快的替代方案?

python - 通过Python查询时如何查看MySQL格式的日期时间?

javascript - Python、 Bokeh 、Javascript : use Mongodb database query in callback

python - 我想使用 Networkx 和 Matplotlib 输出 3D 图形

python-3.x - 如何在笔记本电脑的浏览器中显示正在服务器本地主机中运行的Webapp

python - 关于 Scikit-Learn 提前停止的问题

python - 如何使用 music21 显示空的五线谱?