【问题标题】:why * used before declaring a variable in python [duplicate]为什么在python中声明变量之前使用* [重复]
【发布时间】:2017-12-17 03:48:40
【问题描述】:

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

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

打印变量后,我得到了一个字典,它是由 a 制作的。但是不明白为什么 * 在 l 变量之前使用

【问题讨论】:

  • 它用于将其余数据解包到一个列表中。

标签: python python-3.x


【解决方案1】:

这是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"]llist(map(float ... 转换为浮点列表

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

除此之外:您的循环可以总结为字典理解,如下所示:

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

【讨论】:

    猜你喜欢
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    相关资源
    最近更新 更多