6.11 列表

像字符串类型一样,列表类型也是序列式的数据类型,可以通过下标或者切片操作来访问某一个或者某一块连续的元素。然而,相同的方面也就这些,字符串只能由字符组成,而且是不可变的(不能单独改变它的某个值),而列表则是能保留任意数目的Python对象的灵活的容器。就像我们将要看到的例子中所示,创建列表非常简单,向列表中添加元素也是如此。

列表不仅可以包含Python的标准类型,而且可以用用户定义的对象作为自己的元素。列表可以包含不同类型的对象,而且要比C或者Python自己的数组类型(包含在array扩展包中)都要灵活,因为数组类型所有的元素只能是一种类型。列表可以执行pop,empt、sort、reverse等操作。列表也可以添加或者减少元素,还可以跟其他的列表结合或者把一个列表分成几个。可以对单独一个元素或者多个元素执行insert、update或remove操作。

元组类型在很多操作上都跟列表一样,许多用在列表上的例子在元组上照样能跑,我们有一节内容专门讲解元组类型。它们的主要不同在于元组是不可变的,或者说是只读的,所以那些用于更新列表的操作,比如用切片操作来更新一部分元素的操作,就不能用于元组类型。

1. 如何创建列表类型数据并给它赋值

创建一个列表就像给一个变量赋值一样的简单。你手工写一个列表(空的或者有值的都行)然后赋值给一个变量,列表是由方括号([])来定义的,当然,你也可以用工厂方法来创建它。

6.11 列表 - 图1

2. 如何访问列表中的值

列表的切片操作就像字符串中一样;切片操作符([])和索引值或索引值范围一起使用。

6.11 列表 - 图2

3. 如何更新列表

你可以通过在等号的左边指定一个索引或者索引范围的方式来更新一个或几个元素,也可以用append()方法来追加元素到列表中去。

6.11 列表 - 图3

4. 如何删除列表中的元素或者列表(本身)

要删除列表中的元素,如果你确切的知道要删除元素的素引可以用del语句,否则可以用remove()方法。

6.11 列表 - 图4

你还可以通过pop()方法来删除并从列表中返回一个特定对象。

一般来说,程序员不需要去删除一个列表对象。列表对象出了作用域(比如程序结束,函数调用完成等等)后它会自动被析构,但是如果你想明确的删除一整个列表,你可以用del语句:

6.11 列表 - 图5