目录
1. 列表概述
1.1 什么是列表
关于列表,就是所有元素的一个集合。包括数字,字符串,字典,列表 and so so......
在Python中,列表元素下至一两个,上至百万个,功能强大,处理过程明显易懂。
列表是一个有序集合,元素的顺序按照添加的事件前后进行排序。
1.2 创建列表
- 直接使用 “[ ]” 创建列表;
- 使用函数“list()”。
>>> a_list = [1,2,3,4,5]
>>> b_list = list("6,7,8,9,10".split(","))
>>> a_list
[1, 2, 3, 4, 5]
>>> b_list
['6', '7', '8', '9', '10']
2. 处理列表元素
2.1 访问列表元素
2.1.1 下标索引
我们通常使用列表的下标索引来进行访问列表元素,在使用下标索引的时候要注意以下几个问题:
- 列表的第一个元素下标索引为 0 ,依此类推;
- 列表的下标索引可以是负值。即,最后一个列表元素索引值为 -1 ,依此类推;
>>> a_list = [1,2,3,4,5]
>>> a_list [0]
1
>>> a_list [-1]
5
>>> length = len(a_list)
>>> a_list [length - 1]
5
Tips:获取列表长度可以使用 “ len() ” 函数,该函数返回值为列表的元素个数。
2.1.2 切片
我们对列表中的部分元素进行处理,python称之为切片!而要创建切片,我们需要三个下标索引。初始索引,默认为 0 ;终止索引,默认为 -1 ;步长,默认为 1 。
>>> a_list = list(range(0,6))
>>> a_list
[0, 1, 2, 3, 4, 5]
>>> a_list[::]
[0, 1, 2, 3, 4, 5]
>>> a_list[1:-2]
[1, 2, 3]
>>> a_list[0::2]
[0, 2, 4]
我们还可以使用for循环来遍历切片元素。
>>> a_list = list(range(0,20))
>>> a_list
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> for num in a_list[1:15:2]:
square = num ** 2 #进行乘方运算
print(square,end = ' ')
1 9 25 49 81 121 169
#1 3 5 7 9 11 13
Tips:range()函数和列表切片一样,有三个参数:初始值,终止值,步长。其作用是生成一系列的数。注意,生成的这一系列数中,起始于起始值,但终止于终止值的前一个数,使用时应当引起注意!
2.2 列表元素的增删改查(方法)
2.2.1 增
- alist.append(item):向alist这个列表中添加一个数据类型不限的变量——item。该方法只能添加单个变量。
- alist.extend([ ]):该方法的参数是一个可迭代对象,例如列表,新的内容会按照迭代顺序依次添加到原列表最后一个元素的后面。
- 其他方法:切片方法......
- alist.insert( , ):该方法要求输入两个参数,第一个参数为列表索引,即插入数据的位置;第二个参数为想要插入列表的数据。在插入位置的原列表元素的正索引值依次+1。该方法只能添加单个变量。
>>> alist = list(range(1,10,2)) >>> alist [1, 3, 5, 7, 9] >>> alist.append(11) >>> alist [1, 3, 5, 7, 9, 11] >>> alist.append('11') >>> alist [1, 3, 5, 7, 9, 11, '11'] >>> blist = [13, 15, 17] >>> alist.extend(blist) >>> alist [1, 3, 5, 7, 9, 11, '11', 13, 15, 17] >>> alist[6:] = alist[7:] >>> alist [1, 3, 5, 7, 9, 11, 13, 15, 17] >>> alist.insert(1,2) >>> alist [1, 2, 3, 5, 7, 9, 11, 13, 15, 17]
2.2.2 删
-
alist.remove():参数为想要移除的元素;注意:1.若列表中存在多个匹配的元素,remove方法只会删除第一个;2.若列表中没有匹配的对象,程序会报错:valueerror;
-
alist.pop():参数为列表下标索引;返回值为删除的元素;
-
alist.clear():无参数,清空列表元素;
-
del alist[下标索引]:删除下标索引处元素,无返回值。
>>> alist.remove(17) >>> alist [1, 2, 3, 5, 7, 9, 11, 13, 15] >>> alist.pop(-1) 15 >>> alist [1, 2, 3, 5, 7, 9, 11, 13] >>> del alist[-1] >>> alist [1, 2, 3, 5, 7, 9, 11] >>> alist.clear() >>> alist []
2.2.3 改
- alist[下标索引] = 新的值:
- 切片方法;
- 列表的排序:从小到大排序:alist.sort();有两个参数,key:指定一个用于比较的函数(lambda函数),默认为None,reverse:用于指定排序结果是否反转默认为False;
- 列表的反转:alist.reverse();
>>> alist = [1,5,3,9,8,2,4] >>> alist[0] = 3 >>> alist [3, 5, 3, 9, 8, 2, 4] >>> alist[4:] = [3,9,6,5] >>> alist [3, 5, 3, 9, 3, 9, 6, 5] >>> alist.sort() >>> alist [3, 3, 3, 5, 5, 6, 9, 9] >>> alist.reverse() >>> alist [9, 9, 6, 5, 5, 3, 3, 3] >>> alist = [3, 5, 3, 9, 3, 9, 6, 5] >>> alist.sort(reverse = True) >>> alist [9, 9, 6, 5, 5, 3, 3, 3]
2.2.4 查
- alist.count():返回列表中参数出现的次数,参数为想要查找的对象;
- alist.index( , , ):返回参数的下标索引值,若有多个元素满足,则返回第一个元素下标索引值;第一个参数为想要查找的对象,第二个参数为查找的起点,第三个参数为查找的终点;
- blist = alist.copy():列表的复制,还可以使用切片方法复制,blist = alist[:],这种方法在python中称之为浅拷贝,即shallow copy。
>>> alist = [3, 5, 3, 9, 3, 9, 6, 5] >>> alist.count(3) 3 >>> alist.index(9) 3 >>> clist = alist >>> blist = alist.copy()#shallow copy >>> alist [3, 5, 3, 9, 3, 9, 6, 5] >>> blist [3, 5, 3, 9, 3, 9, 6, 5] >>> clist [3, 5, 3, 9, 3, 9, 6, 5] >>> alist.clear() >>> alist [] >>> blist [3, 5, 3, 9, 3, 9, 6, 5] >>> clist []
2.3 列表的运算
1. 加法运算:即列表的拼接
2. 乘法运算:即列表的复制
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = a + b
>>> c
[1, 2, 3, 4, 5, 6]
>>> c = a * 3
>>> c
[1, 2, 3, 1, 2, 3, 1, 2, 3]
2.4 列表的嵌套
2.4.1 二维列表
1. 创建一个二维列表
>>> a = []
>>> b = []
>>> for i in range(3):
... a.append(b)
...
...
>>> a
[[], [], []]
对二维列表复制的时候,应当注意使用深拷贝
>>> a = [[1, 2, 3],
... [4, 5, 6],
... [7, 8, 9]]#ctrl + j可以在交互界面换行
>>> import copy
>>> b = copy.copy(a)
>>> c = copy.deepcopy(a)
>>> b
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> c
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> a[1][1] = 0
>>> b
[[1, 2, 3], [4, 0, 6], [7, 8, 9]]
>>> c
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
3. 列表推导式
由于列表推导式在python中,是以更加底层的语言——C语言来运行的,因此,列表推导式的效率通常比循环语句快一倍左右。
列表推导式本质是用一个或者多个循环生成列表元素,创建出一个列表。
其语法格式为:
[expression for target1 in iterable1 if condition1
for target2 in iterable2 if condition2
... ... ...
for targetn in iterablen if conditionn]
expression:即最终保存到列表中的列表元素的变量名;
target1~n:循环体循环n次得出的结果;
iterable1~n:循环体的对象;
condition1~n:判断循环体得到的结果是否满足输出条件。
举例说明:
>>> _ = [ [x, y] for x in range(10) if x % 2 == 0
... for y in range(20) if y % 5 == 0]
#等价于:
>>> _ = []
>>> for x in range(10):
... if x % 2 == 0:
... for y in range(20):
... if y % 5 == 0:
... t = [x, y]
... _.append(t)
...
...
>>> _
[[0, 0], [0, 5], [0, 10], [0, 15], [2, 0],
[2, 5], [2, 10], [2, 15], [4, 0], [4, 5],
[4, 10], [4, 15], [6, 0], [6, 5], [6, 10],
[6, 15], [8, 0], [8, 5], [8, 10], [8, 15]]#格式应该是在一行中
到此为止,列表这块内容差不多就结束了。其中固然还有很多内容没有涉及到,今后进行补充......
See you......! ^_^ !