一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

python下list和tuple用法说明

时间:2015-05-26 编辑:简简单单 来源:一聚教程网


list

Python内置的一种数据类型是列表:list。list是python中的基本数据结构之一,是一种有序的集合,可以随时添加和删除其中的元素。它支持字符,数字,字符串甚至可以在里面包含列表。

比如,列出班里所有同学的名字,就可以用一个list表示:

classmates = ['Joe', 'Bob', 'Tom']
classmates
['Joe', 'Bob', 'Tom']
这里该变量classmates就是一个list。用len()可以获得list元素的个数:
len(classmates)

3

这里用索引来访问list中每一个位置的元素,索引是从0开始的:

classmates[0]

‘Joe’

classmates[1]

‘Bob’

classmates[2]

‘Tom’

classmates[3]

IndexError: list index out of range

因为索引超出了范围时,所以这里会提示出错。

如果要获取最后一个元素,这里还可以用-1做索引,直接获取最后一个元素:

classmates[-1]

‘Tom’

以此类推,可以获取倒数第2个、倒数第3个:

classmates[-2]

‘Bob’

classmates[-3]

‘Joe’

在list中追加元素到末尾:

classmates.append('Jerry')

classmates

['Joe', 'Bob', 'Tom', 'Jerry']
要删除list末尾的元素,可以用pop()。

classmates.pop() (这里括号里面不加任何参数的话默认是删除末尾的元素)

‘Jerry’

classmates

[‘Joe’, ‘Bob’, ‘Tom’,]

要删除指定位置的元素,用pop(i),其中i表示索引位置:

classmates.pop(1)

‘Bob’

classmates

[‘Joe’,‘Tom’]

list元素也可以包含另一个list,比如:

s = [‘python’, ‘java’, [‘asp’, ‘php’], ‘mysql’]

要拿到‘php’的话可以写p[1]或者s[2][1]即可(这里令p=[‘asp’,’php’])


例子

获得list元素的个数:
复制代码 代码如下:

>>> lst=['更新慢','python',5.44,False]
>>> len(lst)
4
引用访问时索引是从0开始,注意不要越界:
复制代码 代码如下:

>>> lst[0]
'更新慢'
>>> lst[1]
'python'
>>> lst[2]
5.44
>>> lst[3]
False
>>> lst[4]
Traceback (most recent call last):
  File "", line 1, in
    lst[4]
IndexError: list index out of range
用-1做索引,直接获取最后一个元素:
复制代码 代码如下:

>>> lst[-1]
False
>>> lst[-2]
5.44
>>> lst[-3]
'python'
>>> lst[-4]
'更新慢'
>>> lst[-5]
Traceback (most recent call last):
  File "", line 1, in
    lst[-5]
IndexError: list index out of range
因为list是一个可变的有序表,所以,可以往list末尾追加元素:
复制代码 代码如下:

>>> lst.append('加我一个')
>>> lst
['更新慢', 'python', 5.44, False, '加我一个']
一次追加多个元素:
复制代码 代码如下:

>>> lst.extend(['A','B','C'])
>>> lst
['更新慢', 'python', 5.44, False, '加我一个', 'A', 'B', 'C']
要删除list末尾的元素,用pop()方法:
复制代码 代码如下:

>>> lst.pop()
'C'
>>> lst
['更新慢', 'python', 5.44, False, '加我一个', 'A', 'B']
删除指定位置的元素,用pop(i)方法,其中i是索引位置:
复制代码 代码如下:

>>> lst.pop(0)
'更新慢'
>>> lst
['python', 5.44, False, '加我一个', 'A']
list元素替换,可以直接赋值给对应的索引位置:
复制代码 代码如下:

>>> lst[-1]='100'
>>> lst
['python', 5.44, False, '加我一个', '100']
list元素也可以是另一个list,插入的那个list只算一个元素:
复制代码 代码如下:

>>> lst.append(lst1)
>>> lst
['python', 5.44, False, '加我一个', '100', ['666', 'QWER']]
>>> len(lst)
6

tuple

另一种有序列表叫元组(定值表 ):(tuple一旦初始化就不能修改,比如同样是列出同学的名字:

classmates = (‘Joe’, ‘Bob’, ‘Tom’)

现在,classmates这个tuple不能变了。你可以正常地使用classmates[0],classmates[-1],但不能赋值成另外的元素。

因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。

要定义一个只有1个元素的tuple,如果你这么定义:

b = (1)

b

1

定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1啦。

所以,只有1个元素的tuple定义时必须加一个逗号来消除歧义:

b = (1,)

b

(1,)

Tuple一旦初始化就不能修改。字符串是一种特殊的元素,因此可以执行元组的相关操作。
复制代码 代码如下:

>>> str='该睡觉了,晚安!'
>>> print (str[:7])
该睡觉了,晚安
不可变的tuple意义就在于因为不可变,所以代码更安全。如果可能,能用tuple就尽量用tuple。
复制代码 代码如下:

>>> tuple=('1','2','3')
>>> tuple[0]=6
Traceback (most recent call last):
  File "", line 1, in
    tuple[0]=6
TypeError: 'tuple' object does not support item assignment
定义一个空tuple:
复制代码 代码如下:

>>> tuple1=()
>>> tuple1
()

注意,要定义一个只有1个元素的tuple:
复制代码 代码如下:

>>> tuple2=(666,)
>>> tuple2
(666,)              #正确的
>>> tuple3=(666)
>>> tuple3
666                 #错误的,只定义了666这个数
注意:Tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。
复制代码 代码如下:

>>> l=['CCTV-5','HI']
>>> tuple4=('UFO','HACK',l)
>>> tuple4
('UFO', 'HACK', ['CCTV-5', 'HI'])
>>> l[1]='我先变一下'
>>> tuple4
('UFO', 'HACK', ['CCTV-5', '我先变一下'])

Python在显示只有1个元素的tuple时,也会加一个逗号以免你误解成数学计算意义上的括号。

总结:

list和tuple是Python内置的有序集合,一个可变,一个不可变。你可以根据需要来选择使用它们。

热门栏目