1、可变的有序集合list
>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']
变量classmates就是一个list
用len()函数可以获得list元素个数:
>>> len(classmates)
3
使用索引访问list中每个位置的元素,从0开始:
>>> classmates[0]
'Michael'
>>> classmates[1]
'Bob'
>>> classmates[2]
'Tracy'
>>> classmates[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
当索引超出了范围时,会报一个IndexError错误,要确保索引不越界,最后一个元素的索引是len(classmates)-1
若要取最后一个元素,除了计算索引位置,还可以用-1做索引:
>>> classmates[-1]
'Tracy'
以此类推,可以获取倒数第2个,倒数第三个:
>>> classmates[-2]
'Bob'
>>> classmates[-3]
'Michael'
>>> classmates[-4]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
倒数第4个越界了,所以报错
追加元素到末尾:
>>> classmates.append('Adam')
>>> classmates
['Michael', 'Bob', 'Tracy', 'Adam']
将元素插入到索引号为1的位置:
>>> classmates.insert(1, 'Jack')
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy', 'Adam']
删除末尾的元素:
>>> classmates.pop()
'Adam'
>>> classmates
['Michael', 'Jack', 'Bob', 'Tracy']
删除索引为1的元素:
>>> classmates.pop(1)
'Jack'
>>> classmates
['Michael', 'Bob', 'Tracy']
替换元素,直接赋值给对应的索引位置:
>>> classmates[1] = 'Sarah'
>>> classmates
['Michael', 'Sarah', 'Tracy']
list里面元素的数据类型可以不同:
>>> L = ['Apple', 123, True]
>>> L
['Apple', 123, True]
list可以作为元素属于另一个list:
>>> s = ['python', 'java', ['asp', 'php'], 'scheme']
>>> len(s)
4
s[2]也是一个list:
>>> p = ['asp', 'php']
>>> s = ['python', 'java', p, 'scheme']
>>> s
['python', 'java', ['asp', 'php'], 'scheme']
要拿到'php',可以写成p[1]或者s[2][2],可以将s看成一个二维数组
空的list,长度为0:
>>> L = []
>>> len(L)
0
2、不可变的有序集合tuple
tuple叫做元组,一旦初始化就不能修改:
>>> classmates = ('Michael', 'Bob', 'Tracy')
无法更改其中的元素,可以正常使用classmates[0],classmates[-1]进行获取元素
因为tuple不可变,所以代码更安全,能用tuple代替list就尽量用tuple
如果定义一个tuple,在定义的时候,tuple的元素必须被确定下来:
>>> t = (1, 2)
>>> t
(1, 2)
定义空的tuple:
>>> t = ()
>>> t
()
定义只有一个元素的tuple:
不能这样定义:
>>> t = (1)
>>> t
1
这样的话,括号表示的是数学运算当中的括号,自然结果就等于1
以下定义是正确的:
>>> t = (1,)
>>> t
(1,)
在显示tuple的值时,也会加一个逗号,以免你误解成数学计算意义上的括号
注:记得在元素后面加逗号
“可变”的tuple:
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])
表面上看tuple的元素变了,其实变的不是tuple的元素,而是list的元素,因为tuple指向的list没有改变,所以,tuple所谓的”不变“是说,tuple的每个元素,指向永远不变,即指向一个list,就不能改成指向其他对象,但是指向的这个list本身是可变的
要保证创建的tuple内容也不变,那就必须保证tuple的每个元素本身也不能变
3、练习:
# -*- coding: utf-8 -*-
L = [
['Apple', 'Google', 'Microsoft'],
['Java', 'Python', 'Ruby', 'PHP'],
['Adam', 'Bart', 'Lisa']
]
# 打印Aplle:
print(L[0][0])
# 打印Python:
print(L[1][1])
# 打印Lisa:
print(L[2][2])
D:\Pythoncode>python 1.py
Apple
Python
Lisa