Python教程(2.6)——list和tuple简介

Python中内置的类型有list和tuple。

 

List

 

list类似于C/C++的数组,可以存储多个数字。例如你可能会需要存储一个班里所有人的名字。这时就可以用到list。list中存储的数据叫做元素(element)。

 

创建list

 

在Python中,使用[...]表示list:

 

>>> names = ['Amy', 'Bob', 'Charles']

 

names是一个list类型的变量,里面有'Amy'、'Bob'和'Charles'三个元素。

 

可以用[]表示一个空list:

 

>>> names = []

 

注意:

 

1. []里的元素(如果有两个即以上)需要用逗号(,)分隔。

 

2. list中的元素类型可以不同:

 

>>> L = [123, False, 'spam']

 

访问list中的元素

 

像字符串一样,使用l[index]获取l(类型为list)的索引为index的元素:

 

>>> names[0]
'Amy'
>>> names[1]
'Bob'
>>> names[2]
'Charles'

 

也可以使用负索引,具体不细说了,上一章已经讲过。

 

设置list的元素

 

要设置list索引为index的元素,需要先拿到,然后直接赋值即可:

 

>>> names = ['Amy', 'Bob', 'Charles']
>>> names[0] = 'Tom'
>>> names
['Tom', 'Bob', 'Charles']

 

 

获取list长度

 

像字符串一样,使用len()获取list长度:

 

>>> len(names)
3

 

[]的长度为0:

 

>>> len([])
0
>>> names = []
>>> len(names)
0

 

向list追加元素

 

list是Python的对象,在对象中有一个叫做“方法”的概念,“方法”就是指对象的函数。list对象有append()方法,可以向list追加元素:

 

>>> names.append('Donald')
>>> names
['Amy', 'Bob', 'Charles', 'Donald']

 

删除list元素

 

List对象有pop()方法,可以删除指定位置上的元素:

 

>>> names = ['Amy', 'Bob', 'Charles']
>>> names.pop(1)
['Amy', 'Charles']
>>> names.pop()
['Amy']

 

pop(index)删除索引为index的元素,pop()删除最后一个元素。注意pop()方法返回删除相应元素后的list,这就是为什么l.pop()和l.pop(index)会显示结果。

 

清空list

 

清空list很简单,只要设为[]就好了:

 

>>> names = []
>>> names
[]

 

list嵌套

 

前面说过,list的每个元素可以不一样。list甚至可以包含list:

 

>>> positions = [
...     [0, 0, 0],
...     [0, 1, 0],
...     [2, 1, 5]
... ]
>>> positions
[[0, 0, 0], [0, 1, 0], [2, 1, 5]]

 

在这个例子中,我们获取positions中的元素,元素类型也是list:

 

>>> positions[0]
[0, 0, 0]
>>> positions[1]
[0, 1, 0]
>>> positions[2]
[2, 1, 5]

 

如果还要获取以上list中的元素呢?假设要获取positions[0]的第1个元素,一般的list我们直接使用[0]来获取第一个元素,对吧?这里也一样,直接把[0]加在positions[0]后面即可:

 

>>> positions[0][0]
0

 

其它数也是一样的:

 

>>> positions[1][1]
1
>>> positions[2][0]
2

 

Tuple简介

 

Python还支持一种叫做tuple的数据类型。Tuple和list类似,但是不可变(immutable)的。

 

创建tuple

 

使用(...)表示tuple:

 

>>> cubes = (1, 8, 27, 64)

 

空tuple可以用()表示:

 

>>> cubes = ()

 

但是如果是一个元素的tuple呢?好像是这样写的:

 

>>> cubes = (1)

 

但是现在检查cubes会发现:

 

>>> cubes
1

 

cubes是个int!这里的(1)被看作整数1了。

 

因此,需要在()中加一个逗号(,),表示这是一个tuple:

 

>>> cubes = (1,)
>>> cubes
(1,)

 

Python在显示一个元素的tuple时,也会加一个逗号。

 

其他操作

 

除不能设置、追加、删除元素外,tuple的操作和list相似。

 

注意

 

虽然说tuple是不可变的,但是也有一些奇怪的地方。下面是一个含有list的tuple:

 

>>> t = (1, 2, [1, 2])

 

有下列语句:

 

>>> t[2][0] = 10
>>> t
(1, 2, [10, 2])

 

很奇怪吧,tuple的元素怎么被改变了?!

 

答案是,t被创建时,里面的元素分别是1、2、[1, 2]。后来我们把[1, 2]的内容改成了[10, 2],看起来t的元素变了,但这里的“不变”指指向不变,虽然t[2]的内容改变了,但是一直是同一个list。

 

但是像下面这样就不行了:

 

>>> t[2] = 10
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

 

(此文未完,原文链接:http://www.cnblogs.com/collectionne/p/6878075.html

posted @ 2017-05-19 14:08  collectionne  阅读(772)  评论(0编辑  收藏  举报