列表(List)通常作为函数的返回类型。列表和元组相似,也是由一组元素组成,列表可以实现添加、删除和查找操作,元素的值可以被修改。
一、列表的创建
列表是由一系列元素组成,所有的元素都被包含在一对方括号中。列表创建后,可以执行添加、删除或修改操作。
列表的创建格式如下所示:
list_name = [元素1,元素2,...]
列表的添加可以调用append(),该方法的声明如下所示:
append(object)
其中,object可以是元组、列表、字典或任何对象。append()每次添加的新元素将排列在列表的尾部。
列表的删除可以调用remove(),该方法的声明如下所示:
remove(value)
该方法将删除元素value。如果value不在列表中,Python将抛出ValueError异常。
例子:演示列表的创建、添加和删除操作。
#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected] list = ["apple","banana","grape","orange"] print list print list[2] list.append("watermelon") list.insert(1,"grapefruit") print list list.remove("grape") print list print list.pop()#pop()取出列表的最后一个元素 print list list.remove("a") print list
输出结果:
---------- python2.7 ---------- [‘apple‘, ‘banana‘, ‘grape‘, ‘orange‘] grape [‘apple‘, ‘grapefruit‘, ‘banana‘, ‘grape‘, ‘orange‘, ‘watermelon‘] [‘apple‘, ‘grapefruit‘, ‘banana‘, ‘orange‘, ‘watermelon‘] watermelon [‘apple‘, ‘grapefruit‘, ‘banana‘, ‘orange‘] Traceback (most recent call last): File "Noname1.py", line 16, in <module> list.remove("a") ValueError: list.remove(x): x not in list 输出完成 (耗时 0 秒) - 正常终止
特别说明:
如果list列表中存在两个相同的元素,此时调用remove()移除同名元素,将只会删除list列表中位置靠前的元素。
二、列表的使用方法
列表的使用方法与元组十分相似,同样支持负索引、分片以及多元列表等特性,但是列表中的元素可以修改,而且存在一些处理列表的方法。
例子:演示负索引、分片和遍历二元列表的方法。
#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected] list = ["apple","banana","grape","orange"] print list[-2] print list[1:3] print list[-3:-1] list = [["apple","banana"],["grape","orange"],["watermelon"],["grapefruit"]] for i in range(len(list)): print "list[%d]:"% i,"", for j in range(len(list[i])): print list[i][j],"", print
输出结果:
---------- python2.7 ---------- grape [‘banana‘, ‘grape‘] [‘banana‘, ‘grape‘] list[0]: apple banana list[1]: grape orange list[2]: watermelon list[3]: grapefruit 输出完成 (耗时 0 秒) - 正常终止
列表实现了连接操作的功能,列表的连接提供了两种方法
1、调用extend()连接两个不同的列表;
2、使用运算符+或+=
例子:演示列表的连接功能。
#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected] list1 = ["apple","banana"] list2 = ["grape","orange"] list1.extend(list2) print list1 list3 = ["watermelon"] list1 = list1 + list3 print list1 list1 += ["grapefruit"] print list1 list1 = ["apple","banana"] * 2 print list1
输出结果:
---------- python2.7 ---------- [‘apple‘, ‘banana‘, ‘grape‘, ‘orange‘] [‘apple‘, ‘banana‘, ‘grape‘, ‘orange‘, ‘watermelon‘] [‘apple‘, ‘banana‘, ‘grape‘, ‘orange‘, ‘watermelon‘, ‘grapefruit‘] [‘apple‘, ‘banana‘, ‘apple‘, ‘banana‘] 输出完成 (耗时 0 秒) - 正常终止
三、列表的查找、排序与反转
列表除了可以进行添加、删除等操作外,还提供了查找元素的方法。列表的查找提供了两种方式
1、使用index方法返回元素在列表中的位置;
2、使用保留字in来判断元素是否在列表中。
例子:演示列表的查找方法
#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected] list = ["apple","banana","grape","orange"] print list.index("grape") print list.index("orange") print "orange" in list
输出结果:
---------- python2.7 ---------- 2 3 True 输出完成 (耗时 0 秒) - 正常终止
列表提供了排序和反转的方法
例子:
#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected] list = ["apple","banana","grape","orange"] list.sort() print "Sorted list:",list list.reverse() print "Reversed list:",list
输出结果:
---------- python2.7 ---------- Sorted list: [‘apple‘, ‘banana‘, ‘grape‘, ‘orange‘] Reversed list: [‘orange‘, ‘grape‘, ‘banana‘, ‘apple‘] 输出完成 (耗时 0 秒) - 正常终止
说明:
sort()提供了参数reverse用于控制元素排序的顺序。如果不提供参数,默认采用首字母升序排序。如果设置参数reverse=True,则采用首字母降序排列。
注意:
在Python中,列表是由类list实现的,使用函数help(list)查看list类的定义,可以快速了解列表所包含的方法。
列表的常用方法
方法名 |
说明 |
append(object) | 在列表的末尾添加一个对象object |
insert(index,object) | 在指定的索引index处插入一个对象object |
remove(value) | 删列表中首次出现的value值 |
pop([index]) | 删除索引index指定的值,如果index不指定,则删除列表中最后一个元素 |
extend(iterable) | 将iterable指定的元素添加到列表的末尾 |
index(value,[start,[stop]]) | 返回value现在出现在列表中的索引 |
sort(cmp=None,key=None,reverse=False) | 列表的排序 |
reverse() | 列表的反转 |
四、用列表实现堆栈和队列
堆栈和队列是数据结构中常见的数据结构,使用列表的append()、pop()方法可以模拟这两种数据结构。
1、堆栈的实现
堆栈是指最先进入堆栈的元素最后才输出,符合后进先出的原则。栈的插入、弹出是通过栈首指针控制的。当插入一个新的元素时,指针移到新元素的位置,当弹出一个元素时,指针移到下面一个元素的位置,即原堆栈倒数第2个元素的位置,该元素称为栈顶元素。
堆栈的实现方法是:调用append()可以把一个元素添加到堆栈的顶部,调用pop()方法可以把堆栈中的最后一个元素弹出来。
假设有一个堆栈["apple","banana","grape"],要向堆栈中添加一个新的元素“orange”。列表实现堆栈的原理如下:
说明:
“apple”是列表中第1个进入的元素,所以在堆栈的最顶端。电泳append(“orange”)后,程序把”orange”元素插入到堆栈的顶部。此时栈的指针移动到元素“orange”,栈中包含4个元素,“orange”在堆栈的顶部。然后调用pop(),弹出顶部的元素“orange”,栈的指针移到“grape”。
例子:列表模拟堆栈的方法
#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected] list = ["apple","banana","grape"] list.append("orange") print list print "弹出的元素:",list.pop() print list
输出结果:
---------- python2.7 ---------- [‘apple‘, ‘banana‘, ‘grape‘, ‘orange‘] 弹出的元素: orange [‘apple‘, ‘banana‘, ‘grape‘] 输出完成 (耗时 0 秒) - 正常终止
2、队列的实现
队列是指最先进入队列的元素最早输出,符合“先进先出”的原则。队列的插入、弹出是通过队首和队尾指针控制的。当插入一个新的元素时,队尾指针移到新元素的位置,当弹出一个元素时,队首指针移到原队列中第2个元素的位置,该元素成为队列的第1个元素。队列也是通过调用append()和pop()方法实现的,但是pop()的调用方式有所不同,通过调用pop(0)弹出队列最前面的元素。
假设有一个队列["apple","banana","grape"],要向队列中添加一个新的元素“orange”。
列表实现队列的原理如下:
说明:
apple是队列中第1个进入的元素,所以置于队列的最前端。调用append(“orange”)后,程序把orange元素插入到队列的尾部,队尾指针移到元素orange。此时队列中包含4个元素,orange置于队列的尾部,然后调用pop(0),弹出队列最前面的元素apple,队首指针移到元素banana,从而实现了先进先出的队列结构。
例子:用列表模拟队列的方法
#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v2.7 #Author: [email protected] list = ["apple","banana","grape"] list.append("orange") print list print "弹出的元素:",list.pop() print list
输出结果:
---------- python2.7 ---------- [‘apple‘, ‘banana‘, ‘grape‘, ‘orange‘] 弹出的元素: orange [‘apple‘, ‘banana‘, ‘grape‘] 输出完成 (耗时 0 秒) - 正常终止