Python入门教程第33篇 列表解包

Posted 不剪发的Tony老师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门教程第33篇 列表解包相关的知识,希望对你有一定的参考价值。

本篇我们学习如何对列表进行解包(unpack)操作。

列表解包

以下代码定义了一个字符串列表:

colors = ['red', 'blue', 'green']

如果想要把列表的三个元素值赋予不同的变量,可以使用以下方法分别进行赋值:

red = colors[0]
blue = colors[1]
green = colors[2]

不过,Python 为此提供了一个更好的方法,称为序列解包(sequence unpacking)。解包的基于语法可以用于将列表或者元组的元素值赋予多个变量。例如:

red, blue, green = colors

以上语句可以将 colors 列表的三个元素分布赋予变量 red、blue 以及 green。

示例中,左侧变量的数量和右侧列表中元素的数量相同。如果左侧变量的数量少于或者多于列表中元素的数量,将会返回错误。例如:

colors = ['red', 'blue', 'green']
red, blue = colors
ValueError: too many values to unpack (expected 2)

在这种情况下,Python 无法将三个元素拆解到两个变量中。

解包与打包

如果我们只想解包列表左侧的部分元素,不关心其他元素,可以采用以下方法:

  • 首先,解包所需的元素到变量中。
  • 其次,将其他元素打包成一个新的列表并赋予另一个变量。

在变量名前增加一个星号(*)可以将剩余的元素打包成一个列表并赋予该变量。例如:

colors = ['red', 'blue', 'green']
red, blue, *other = colors

print(red)
print(blue)
print(other)

输出结果如下:

red
blue
['green']

以上示例将 colors 列表的第一个和第二个元素赋予变量 red 和 blue,同时将最后一个元素赋予变量 other。

再看一个示例:

colors = ['cyan', 'magenta', 'yellow', 'black']
cyan, magenta, *other = colors

print(cyan)
print(magenta)
print(other)

输出结果如下:

cyan
magenta
['yellow', 'black']

以上示例将列表的前两个元素赋予了两个变量,同时将后两个元素打包成一个新的列表赋予 other 变量。

总结

  • 列表解包用于将列表的元素赋予多个变量。
  • 在变量前使用星号(*)可以将列表中剩余的变量打包成一个新的列表。

以上是关于Python入门教程第33篇 列表解包的主要内容,如果未能解决你的问题,请参考以下文章

Python:如何将剩余的列表元素添加到列表中,类似于解包?

Python入门教程第59篇 函数进阶之可变参数

python中的解包

Python入门教程第28篇 列表

python 第34课 字典 _ 序列解包用于列表元组字典

python 第34课 字典 _ 序列解包用于列表元组字典