gpt4 book ai didi

python - 列表中的 x, *y 在 python 中是什么意思

转载 作者:太空狗 更新时间:2023-10-30 02:35:49 25 4
gpt4 key购买 nike

我最近遇到了一段 python 代码,看起来像这样

groups = {}
for d, *v in dishes:
for x in v:
groups.setdefault(x, []).append(d)

dishes 代表一个二维数组。第一个 for 循环语句是什么意思?*v 是什么? v 前面的星号表示什么?还有哪些情况是变量前加星号?

最佳答案

它本质上是元组/列表拆包和*args 可迭代拆包的组合。在 for 循环的每次迭代中,每个可迭代对象都会被解包。

首先让我们看一个简单的元组/列表拆包:

>>> x, y = (1, 2)
>>> x
1
>>> y
2

# And now in the context of a loop:
>>> for x, y in [(1, 2), (3, 4)]:
>>> print(f'x={x}, y={y}')
"x=1, y=2"
"x=3, y=4"

现在考虑以下内容(想象一下循环中的相同概念,如上所示):

>>> x, y = (1, 2, 3)
ValueError: too many values to unpack (expected 2)

>>> x, *y = 1, 2, 3
>>> x
1
>>> y
[2, 3]

请注意 * 如何允许 y 消耗所有剩余参数。

这类似于您在函数中使用 * 的方式 - 它允许未指定数量的参数并消耗所有参数。您可以查看更多 (*args) 用法示例 here .

>>> def foo(x, *args):
>>> print(x)
>>> print(args)

>>>foo(1, 2, 3, 4)
1
[2, 3, 4]

至于实际例子,这里有一个简单的例子:

>>> names = ("Jack", "Johnson", "Senior")
>>> fist_name, *surnames = names
>>> print(surnames)
["Johnson", "Senior"]

关于python - 列表中的 x, *y 在 python 中是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57814195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com