python 中加星标的列表变量交换
starred list variable swapping in python
我有一个概念性的问题。我有一些代码片段及其相应的输出
ls = [1,2,3,4]
a = '?'
a, *ls = *ls, a
a: 1
ls: [2, 3, 4, '?']
ls = [1,2,3,4]
a = '?'
a, *ls = ls, a
a: [1, 2, 3, 4]
ls: ['?']
ls = [1,2,3,4]
a = '?'
a, ls = *ls, a
ValueError: too many values to unpack (expected 2)
第一个对我来说很有意义,但是示例 2 和示例 3 让我感到困惑。为什么第二个和第三个示例的输出是这样的?
示例 1 分配了 5 个元素 (*ls, a
)。第一个转到第一个变量,其余转到带星号的变量 (a, *ls
)。
示例 2 分配 2 个元素 (ls, a
)。第一个元素转到第一个变量,其余元素(即另一个元素)转到带星号的变量 (a, *ls
)。
示例 3 尝试将 5 个元素 (*ls, a
) 分配给恰好两个变量。这将留下 3 个未分配的值,因此您会收到错误消息。
我有一个概念性的问题。我有一些代码片段及其相应的输出
ls = [1,2,3,4]
a = '?'
a, *ls = *ls, a
a: 1
ls: [2, 3, 4, '?']
ls = [1,2,3,4]
a = '?'
a, *ls = ls, a
a: [1, 2, 3, 4]
ls: ['?']
ls = [1,2,3,4]
a = '?'
a, ls = *ls, a
ValueError: too many values to unpack (expected 2)
第一个对我来说很有意义,但是示例 2 和示例 3 让我感到困惑。为什么第二个和第三个示例的输出是这样的?
示例 1 分配了 5 个元素 (*ls, a
)。第一个转到第一个变量,其余转到带星号的变量 (a, *ls
)。
示例 2 分配 2 个元素 (ls, a
)。第一个元素转到第一个变量,其余元素(即另一个元素)转到带星号的变量 (a, *ls
)。
示例 3 尝试将 5 个元素 (*ls, a
) 分配给恰好两个变量。这将留下 3 个未分配的值,因此您会收到错误消息。