<分区>
我刚开始学习python。我正在关注他们在声明变量之前使用 * 的示例。我的问题是使用它的目的是什么。 例如,我正在关注
for i in range(n):
name, *l = input().split()
s = list(map(float, l))
a[name] = s
打印变量后我得到一个字典,它是由 a.但是无法理解为什么 * 在 l 变量之前使用
标签 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
split
将name
设置为"name"
,l
取["0.0", “1.0”、“2.0”、“3.0”]
。 l
通过 list(map(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 中使用 numpy.random.choice 更快的替代方案?
python - 通过Python查询时如何查看MySQL格式的日期时间?
javascript - Python、 Bokeh 、Javascript : use Mongodb database query in callback
python - 我想使用 Networkx 和 Matplotlib 输出 3D 图形
python-3.x - 如何在笔记本电脑的浏览器中显示正在服务器本地主机中运行的Webapp