This question already has answers here:
Star * operator on left vs right side of an assignment statement
(1 个回答)
Please explain the *elements,=iterable construct [duplicate]
(1 个回答)
3年前关闭。
我刚开始学习python。我正在关注他们在声明变量之前使用 * 的示例。我的问题是使用这个的目的是什么。
例如,我正在关注
打印变量后,我得到一个字典,它是由 a.但不明白为什么 * 在 l 变量之前使用
所以假设你有这样一行:
然后
旁白:你的循环可以用字典理解来总结,如下所示:
(1 个回答)
Please explain the *elements,=iterable construct [duplicate]
(1 个回答)
3年前关闭。
我刚开始学习python。我正在关注他们在声明变量之前使用 * 的示例。我的问题是使用这个的目的是什么。
例如,我正在关注
for i in range(n):
name, *l = input().split()
s = list(map(float, l))
a[name] = s
打印变量后,我得到一个字典,它是由 a.但不明白为什么 * 在 l 变量之前使用
最佳答案
这是 python 3 中引入的一个新的解包功能,称为 star unpacking 或 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))}
关于python - 为什么 * 在 python 中声明变量之前使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45062375/