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 让我感到困惑。为什么第二个和第三个示例的输出是这样的?


aluckdog
浏览 116回答 1
1回答

跃然一笑

示例 1 分配 5 个元素 ( *ls, a)。第一个转到第一个变量,其余的转到带星号的变量 ( a, *ls)。示例 2 分配 2 个元素 ( ls, a)。第一个元素转到第一个变量,其余元素(即另一个元素)转到带星号的变量 ( a, *ls)。示例 3 尝试将 5 个元素 ( *ls, a) 分配给恰好两个变量。这将留下 3 个未分配的值,因此您会收到错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python