一、列表是什么
列表 由一系列按特定顺序排列的元素组成。
在Python中,用方括号 [] 来表示列表,并用逗号来分隔其中的元素。
列表简单实例:
>>> names = ['yanfei','xiaoming','xiaohong','laowang']>>> print(names)['yanfei','xiaoming','xiaohong','laowang']
让Python将列表打印出来,Python将打印列表的内部表示,包括方括号。
1.1 访问列表元素
列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。
要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。
如下面代码提取列表的第一个元素:
>>> names = ['yanfei','xiaoming','xiaohong','laowang']>>> print(names[0])yanfei
请求获取列表元素时,Python只返回该元素,而不包括方括号和引号。
还可以使用字符串方法title() 让元素’yanfei’ 的格式更整洁:
>>> names = ['yanfei','xiaoming','xiaohong','laowang']>>> print(names[0].title())Yanfei
1.2 索引从0而不是1开始
在Python中,第一个列表元素的索引为0,而不是1。
第二个列表元素的索引为1。根据这种简单的计数方式,要访问列表的任何元素,都可将其位置减1,并将结果作为索引。
如下,访问第三个列表元素使用索引2,访问第四个列表元素使用索引3:
>>> names = ['yanfei','xiaoming','xiaohong','laowang']>>> print(names[2])xiaohong>>> print(names[3])laowang
Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1 ,可让Python返回最后一个列表元素:
>>> names = ['yanfei','xiaoming','xiaohong','laowang']>>> print(names[-1])laowang
这种约定也适用于其他负数索引,例如,索引-2 返回倒数第 二个列表元素,索引-3 返回倒数第三个列表元素,以此类推。
1.3 使用列表中的各个值
可像使用其他变量一样使用列表中的各个值。
如下,从列表中提取第一个元素,定义到新变量中并输出:
>>> names = ['yanfei','xiaoming','xiaohong','laowang']>>> message = "My name is " + names[0] + "!">>> print(message)My name is yanfei!
二、修改、添加和删除元素
2.1 修改列表元素
修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。
>>> names = ['yanfei','xiaoming','xiaohong','laowang']>>> print(names[0])yanfei>>> names[0] = 'wyf'>>> print(names[0])wyf
2.2 在列表中添加元素
2.2.1 在列表末尾添加元素
使用方法append()在列表末尾添加元素
如下,方法append() 将元素’wyf’ 添加到了列表末尾,而不影响列表中的其他所有元素:
>>> print(names)['yanfei', 'xiaoming', 'xiaohong', 'laowang']>>> names.append('wyf')>>> print(names)['yanfei', 'xiaoming', 'xiaohong', 'laowang', 'wyf']
方法append() 让动态地创建列表易如反掌,例如,可以先创建一个空列表,再使用一系列的append() 语句添加元素:
>>> names = []>>> names.append('wyf')>>> names.append('xiaoming')>>> names.append('laowang')>>> print(names)['wyf', 'xiaoming', 'laowang']
2.2.2 在列表中插入元素
使用方法insert() 可在列表的任何位置添加新元素。
插入元素需要指定新元素的索引和值:
>>> names = ['yanfei','xiaoming','xiaohong']>>> names.insert(0,'wyf')>>> print(names)['wyf', 'yanfei', 'xiaoming', 'xiaohong']
在这个示例中,值’wyf’ 被插入到了列表开头;方法insert() 在索引0处添加空间,并将值’wyf’ 存储到这个地方。这种操作将列表中既有的每个元素都右移一个位置。
2.3 从列表中删除元素
2.3.1 使用del 语句删除元素
如果知道要删除的元素在列表中的位置,可使用del 语句。
如下,使用del语句删除了names列表中的第一个元素’yanfei’:
>>> names = ['yanfei','xiaoming','xiaohong']>>> print(names)['yanfei', 'xiaoming', 'xiaohong']>>> del names[0]>>> print(names)['xiaoming', 'xiaohong']
2.3.2 使用方法pop() 删除元素
方法pop() 可删除列表末尾的元素,并让你能够接着使用它。
如下,先从列表弹出一个值,然后存储到一个变量中,最后打印这个变量,证明我们依然能够访问被删除的值
>>> names = ['yanfei','xiaoming','xiaohong']>>> print(names)['yanfei', 'xiaoming', 'xiaohong']>>> poped_names = names.pop()>>> print(names)['yanfei', 'xiaoming']>>> print(poped_names)xiaohong
2.3.3 根据值删除元素
只知道要删除的元素的值,可使用方法remove() 。
如下,从names列表中删除元素’xiaohong’:
>>> names = ['yanfei','xiaoming','xiaohong']>>> print(names)['yanfei', 'xiaoming', 'xiaohong']>>> names.remove('xiaoming')>>> print(names)['yanfei', 'xiaohong']
使用remove() 从列表中删除元素时,也可接着使用它的值。
如下:先将要删除的值存储在变量中,再使用这个变量告诉Python从列表中删除那个值;最后验证删除值’yanfei’后,它还被存储在变量中。
>>> names = ['yanfei','xiaoming','xiaohong']>>> my_name = 'yanfei'>>> names.remove(my_name)>>> print(my_name)yanfei>>> print("My name is : " + my_name.title() + ".")My name is : Yanfei.
三、组织列表、
3.1 使用方法sort() 对列表进行永久性排序
Python方法sort() 让你能够较为轻松地对列表进行排序。
假设有一个汽车列表,并要让其中的汽车按字母顺序排列。
为简化这项任务,我们假设该列表中的所有值都是小写的。
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']>>> cars.sort()>>> print(cars)['audi', 'bmw', 'subaru', 'toyota']
按与字母顺序相反的顺序排列列表元素,需向sort() 方法传递参数reverse=True
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']>>> cars.sort(reverse=True)>>> print(cars)['toyota', 'subaru', 'bmw', 'audi']
3.2 使用函数sorted() 对列表进行临时排序
要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted() 。
函数sorted() 能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']>>> print(cars)['bmw', 'audi', 'toyota', 'subaru']>>> print(sorted(cars))['audi', 'bmw', 'subaru', 'toyota']>>> print(cars)['bmw', 'audi', 'toyota', 'subaru']
调用函数sorted() 后,列表元素的排列顺序并没有变。
如果你要按与字母顺序相反的顺序显示列表,也可向函数sorted() 传递参数reverse=True
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']>>> print(sorted(cars,reverse=True))['toyota', 'subaru', 'bmw', 'audi']>>> print(cars)['bmw', 'audi', 'toyota', 'subaru']
3.3 倒着打印列表
要反转列表元素的排列顺序,可使用方法reverse() 。
reverse() 不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序:
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']>>> print(cars)['bmw', 'audi', 'toyota', 'subaru']>>> cars.reverse()>>> print(cars)['subaru', 'toyota', 'audi', 'bmw']
方法reverse() 永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse() 即可。
3.4 确定列表的长度
使用函数len() 可快速获悉列表的长度。
>>> cars = ['bmw', 'audi', 'toyota', 'subaru']>>> len(cars)4
