一、列表概述

list是Python中最基本的数据结构,其是以方括号“[]”包围的数据集合,不同成员以“,”分隔的一组有序项目的集合 。列表内的成员可通过序号访问,列表中可以包含任何数据类型,也可包含另一个列表【可任意组合嵌套】,list列表是可变的数据类型【可进行增删改查】。列表的内部函数可通过dir(list)查看,具体每个函数的作用可能过help(list)进行查看。

二、创建list列表

可以通过方括号创建一个列表,也可以通过内建函数list 将一个字符串转化为列表 ,同样可以通过字符串分隔函数转化为列表。示例如下:

 1>>> list1 = [1,2,3,4]
 2>>> print list1
 3[1, 2, 3, 4]
 4>>> list2 = list(range(4))
 5>>> print list2
 6[0, 1, 2, 3]
 7>>> list3 = '1,2,3,4,5'.split(",")
 8>>> print list3
 9['1', '2', '3', '4', '5']
10>>> list4 = list('hello 361way')
11>>> print list4
12['h', 'e', 'l', 'l', 'o', ' ', '3', '6', '1', 'w', 'a', 'y']

三、list列表的索引与切片

同python下的字符串索引一样,list也的正向索引默认也是从0开始,反向索引从 -1开始。list同string一样,也支持切片,用法和string下的用法也相同,如下:

 1>>> list1[0]
 21
 3>>> list1[2]
 43
 5>>> list1[1:3]
 6[2, 3]
 7>>> list1[1:-1]
 8[2, 3]
 9>>> list1[1:-1:2]
10[2]
11>>> list1[0:-1:2]
12[1, 3]
13>>>

通过索引切片也可以很方便的复制一个list,如:l2 = l1[:] 。列表元素的变更与删除:

 1>>> list = ['physics', 'chemistry', 1997, 2000];
 2>>> print list
 3['physics', 'chemistry', 1997, 2000]
 4>>> list[1]='361way'
 5>>> print list
 6['physics', '361way', 1997, 2000]
 7>>> del list[2]
 8>>> print list
 9['physics', '361way', 2000]
10>>> list[3]='com'
11Traceback (most recent call last):
12  File "<stdin>", line 1, in <module>
13IndexError: list assignment index out of range
14</module></stdin>
15>>> del list[1:]
16>>> print list
17['physics']

可以通过list[索引号]=‘‘元素值’’ 的方式修改一个元素的结果,也可以通过del list[索引号]的方式删除一个或一组元素。

四、list列表操作符

list列表也支持len、max、min、+、* 操作,这与字符串相似。如下:

Python 表达式 结果 描述
len([1, 2, 3]) 3 长度
min([1, 2, 3]) 1 最小元素值
max([1, 2, 3]) 3 最大元素值
[1, 2, 3 ,4] + [4, 5, 6 ,3] [1, 2, 3, 4, 4, 5, 6 ,3] 组合
[‘Hi!’] * 4 [‘Hi!’, ‘Hi!’, ‘Hi!’, ‘Hi!’] 重复
3 in [1, 2, 3] True 元素是否存在于列表中
for x in [1, 2, 3]: print x, 1 2 3 迭代

五、list的方法函数

list 列表包含如下方法:

1list.insert(index,var)
2list.pop(var)      #返回最后一个元素,并从list中删除之
3list.remove(var)   #删除第一次出现的该元素
4list.count(var)    #该元素在列表中出现的个数
5list.index(var)    #该元素的位置,无则抛异常
6list.append(var)   #追加元素
7list.extend(list)  #追加list,即合并list到L上
8list.sort()        #排序
9list.reverse()     #倒序

示例如下:

 1>>> l1 = [5,3,2,1,4,6]
 2>>> l1.sort()
 3>>> print l1
 4[1, 2, 3, 4, 5, 6]
 5>>> list = ['physics', '361way', 1997, 2000]
 6>>> list.sort()
 7>>> print list
 8[1997, 2000, '361way', 'physics']
 9>>> list.index(1997)
10>>> list.index(2000)
111
12>>> list.index(a)   //查找字符串时需要用引号引起来
13Traceback (most recent call last):
14  File "<stdin>", line 1, in <module>
15NameError: name 'a' is not defined
16>>> list.index("a") //index索引不到查询的值时抛出异常
17Traceback (most recent call last):
18  File "<stdin>", line 1, in <module>
19ValueError: 'a' is not in list
20>>> 1 in l1  //支持in 和 not in 判断操作
21True
22>>> 1 not in l1
23False

这里需要单独说明下list的extend(扩展)方法 与 append(追加)方法的区别,先看示例:

 1>>> li = ['a', 'b', 'c']
 2>>> li.extend(['d', 'e', 'f'])
 3>>> li
 4['a', 'b', 'c', 'd', 'e', 'f']
 5>>> len(li)
 66
 7>>> li[-1]
 8'f'
 9>>> li = ['a', 'b', 'c']
10>>> li.append(['d', 'e', 'f'])
11>>> li
12['a', 'b', 'c', ['d', 'e', 'f']]
13>>> len(li)
144
15>>> li[-1]
16['d', 'e', 'f']

两者的区别:append可以接受任何类型的数据,并简单地将数据追加到list尾部;extend只能按受list参数,将把list内的每个元素加到原list 中。再来一个例子看下:

 1>>> print list
 2[1997, 2000, '361way', 'physics']
 3>>> list.append('com')
 4>>> print list
 5[1997, 2000, '361way', 'physics', 'com']
 6>>> list.append('test','111')
 7Traceback (most recent call last):
 8  File "<stdin>", line 1, in <module>
 9TypeError: append() takes exactly one argument (2 given)
10>>> list.append(('test','111'))
11>>> print list
12[1997, 2000, '361way', 'physics', 'com', ('test', '111')]

六、list列表的遍历枚举

 1>>> print list
 2[1997, 2000, '361way', 'physics', 'com', ('test', '111')]
 3//直接遍历
 4>>> for i in list:
 5...     print i
 6...
 71997
 82000
 9361way
10physics
11com
12('test', '111')
13//索引枚举
14>>> for index,value in enumerate(list):
15...     print index,value
16...
170 1997
181 2000
192 361way
203 physics
214 com
225 ('test', '111')

注:上面使用到了 python内部函数enumerate ,该函数相当强大,可以枚举string、list、dict 、tuple 。