文章目录
-
-
- 序言
- [1. 列表的创建](#1. 列表的创建)
- [2. 列表的访问](#2. 列表的访问)
- [3. 列表的更新](#3. 列表的更新)
- [4. 列表的删除](#4. 列表的删除)
- [5. 列表的元素查找](#5. 列表的元素查找)
- [6. 列表的脚本操作符](#6. 列表的脚本操作符)
- [7. 列表的函数/方法](#7. 列表的函数/方法)
- [8. 列表的一些其他操作](#8. 列表的一些其他操作)
-
序言
- 总结字典的常见用法,以备查阅
1. 列表的创建
-
列表是python中最常用的数据类型,其数据项不需要具有相同的类型
-
列表创建方式1:\[\]创建
pythona = [] # 创建一个空列表 print(a) b = [1, 2, 'abd'] # 创建列表并赋值 print(b) print(b[2]) # 下标访问 -
列表的创建方式2:list()创建
pythona = list() # 创建一个空列表 print(a) a.append(1) # 添加元素 print(a) b = list("abcdef") print(b) # 输出 ['a', 'b', 'c', 'd', 'e', 'f'] -
列表的创建方式3:range辅助创建整数列表
pythonc = list(range(10)) print(c) # 输出 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] d = list(range(0,10,2)) print(d) # 输出 [0, 2, 4, 6, 8] e = list(range(10,0,-1)) print(e) # 输出 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1] -
列表创建方式4:推导式生成列表
pythonf = [x*2 for x in range(10)] print(f) # 输出 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18] g = [x*2 for x in range(50) if x%8==0] print(g) # 输出 [0, 16, 32, 48, 64, 80, 96] -
二维列表创建方式1:创建空二维列表
python# 方式1: 创建空二维列表 a = [[] for i in range(5)] print(a) # 输出: [[], [], [], [], []] b = [] for i in range(5): b.append([]) print(b) -
二维列表创建方式2:直接定义二维列表
pythonlist_name = [[元素11, 元素12, 元素13, 元素14], [元素21, 元素22, 元素23, 元素24], [元素31, 元素32, 元素33, 元素34]] print(list_name) # 输出 一个 3 x 4 的列表 -
二维列表创建方式3:使用嵌套for循环创建二维列表
python# 创建一个 3 x 4 的列表 lis = [] for i in range(3): lis.append([]) for j in range(4): lis[i].append(j) print(lis) -
二维列表创建方式4:使用推导式生成二维列表
pythonlist_name = [[i for i in range(4)] for j in range(3)] print(list_name) # 3 x 4 列表
2. 列表的访问
-
一维列表的访问
python''' 取元素 ''' list_name[0] # 取第一个元素 list_name[-1] # 取最后一个元素 list_name[:] # 取所有元素 list_name[m : n] # 取[m, n)元素 list_name[m :] # 取m开始到结尾的所有元素 ''' 遍历 ''' for item in list_name: print(item) length = len(list_name) index = 0 while index < length: print(list_name[index]) index += 1 -
二维列表的访问: 注意没法用array数组的方式来读取每一列
python''' 取元素 ''' list_name[row_index][col_index] # 行索引,列索引 ''' 按行读取 ''' for row_item in list_name: print(row_item) # 逐行遍历 ''' 按列读取 ''' for col_index in range(4): columns = [item[col_index] for item in list_name] print(columns) # 输出每一列 # 用array的方式读取每一列失败 print(list_name[:, 0]) # 意图输出所有行第一列失败 ''' 遍历 ''' for row_index in len(list_name): for col_index in len(list_name[0]): print(list_name[row_index][col_index]) for row_item in list_name: for item in row_item: print(item) # 逐行逐列输出
3. 列表的更新
-
直接修改元素值
python1_d_list[0] = 'new_element' 2_d_list[0][1] = 'new_element' -
使用append新增元素
python1_d_list.append(new_element) 2_d_list.append([new_list]) -
在某处插入元素
python1_d_list.insert(0, 'new') # insert(index,obj)将元素插入到列表的index位置处 # 举例 list_name = ['D', 1, 2, 3, 4] list_name.insert(1, 'E') print(list_name) # 输出 ['D', 'E', 1, 2, 3, 4] -
在列表末尾添加多个值:注意添加的序列必须是可迭代对象
pythonlist_1 = [1, 2, 3] list_2 = [4, 5, 6] list_1.extend(list_2) print(list_1) # 输出 [1, 2, 3, 4, 5, 6]
4. 列表的删除
-
使用 del 删除元素
pythonmy_list = [1, 2, 3, 4, 5, 6, 7, 8, 9] del my_list[2:5] # 删除[2, 5)之间的元素 print(my_list) # 输出 [1, 2, 6, 7, 8, 9] -
使用 pop(index = -1) 移除元素:index默认为-1可以修改
python# 例1 list_1 = [1, 2, 3, 4, 1] list_1.pop() print(list_1) # 输出 [1, 2, 3, 4] list_1.pop(0) # 输出 [2, 3, 4] # 例2 my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9] indices_to_remove_index = [2, 4, 6] indices_to_remove_index.sort(reverse=True) # 从后往前删,避免索引错位 [6, 4, 2] for index in indices_to_remove_index: my_list.pop(index) print(my_list) # 输出 [1, 2, 4, 6, 8, 9] -
使用 remove(obj) 移除列表中第一次出现的 obj 元素
python# 例1 list_1 = [1, 2, 3, 4, 1] list_1.remove(1) print(list_1) # 输出 [2, 3, 4, 1] # 例2 my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9] elements_to_remove = [3, 5, 7] for element in elements_to_remove: my_list.remove(element) print(my_list) # 输出 [1, 2, 4, 6, 8, 9] -
使用 clear 清空列表
pythonlist_1 = [1,2,3,4,5] list_1.clear() print(list_1) # 输出 [] -
pop()方法和remove()不推荐使用,因为删除元素后列表大小会变,导致列表索引也会改变,容易出错
5. 列表的元素查找
-
使用index()方法:查找列表中元素第一次出现的位置
pythonindex(obj,start = 0 , end = -1) obj: 要查找的元素 start: 查找的起始位置 end: 查找的结束位置(不包含该位置)python# 遍历查找 # 使用index()方法 list_1 = [1,2,3,4,5] list_1.index(3) # 返回索引 2
6. 列表的脚本操作符
python
[1,2,3]+[4,5,6] -> [1,2,3,4,5,6] # 组合
['Hi!'] * 4 -> ['Hi!', 'Hi!', 'Hi!', 'Hi!'] # 重复
3 in [1,2,3] -> True # 元素是否存在于列表中
7. 列表的函数/方法
-
求列表长度/大小
pythonlen(list) # 一维列表: 元素个数; 二维列表:返回行数 -
比较两个列表的大小
pythoncmp(list1, list2) # 如果是数字,按大小比较 # 如果一方数字,另一方非数字,数字是最小的 # 如果都不是数字,按字母顺序比较 a < b,a > A等 # list1 > list2, 返回1 # list1 < list2, 返回-1 # list1 = list2, 返回0 -
求列表的最大最小元素
pythonmax(list) # 返回最大元素 min(list) # 返回最小元素 -
统计列表中某个元素出现的次数
pythonlist1 = [1,2,3,4,1,2,1,2,1] print(list1.count(1)) # 输出 4,1出现4次 -
对列表元素进行排序: sort默认升序,设置reverse = True则为降序排列
pythonlist1 = [3,5,6,1,2,9] list1.sort() print(list1) # [1, 2, 3, 5, 6, 9] list1.sort(reverse = True) print(list1) # [9, 6, 5, 3, 2, 1] -
列表元素反转,反向排序: reverse()函数
pythonlist1 = [4,3,1,6,7] list1.reverse() print(list1) # [7, 6, 1, 3, 4]
8. 列表的一些其他操作
-
判断一个元素是否在列表内
python# 1. 遍历查找 # 2. 使用index()函数: 存在则返回第一个匹配元素的索引位置,不存在则抛出异常,所以可以如下写 index = -1 index = list.index(obj) if index != -1: print('obj is found!') # 3. 使用.count()方法:判断某个元素在列表中出现的次数 num = list.count(element) -
将二维列表转换为一维列表
python# 1. 遍历转换: 两层for循环 list1 = [[1, 2], [3, 4]] new_list = [item for list in list1 for item in list] print(new_list) # 2. list->array->list, array使用flatten方法 import numpy as np list1 = [[1, 1], [2, 2]] list1 = np.array(list1) ans = list1.flatten() ans = ans.tolist() -
列表作为函数参数
-
可变类型:list ,dict
-
不可变类型:int , string , float ,tuple
-
列表作为函数参数,运行函数会改变原始列表数据,如下
pythona = [1, 2, 'A'] def F(A): A.pop() print(A) # 输出 [1, 2] F(a) print(a) # 输出 [1, 2] -
如果不希望这种情况发生,可以先拷贝一份,避免破坏原始数据
pythona = [1, 2, 'A'] def F(A): lst_copy = A.copy() # 当列表有多重列表时,需要用deepcopy lst_copy.pop() print(lst_copy) # 输出 [1, 2] F(a) print(a) # 输出 [1, 2, 'A'] 没变
-
【参考文章】
2. 二维列表的遍历
3. 二维列表的创建
4. 二维列表按行按列访问
5. 二维列表不能直接切片
6. 二维列表的创建与访问
7. 删除列表中多个元素
8. 列表元素删除方法比较
9. 列表操作详解
10. 列表的基本用法
11. 列表的基本用法
12. 判断元素是否在列表内
13. 二维列表转换为一维
14. 列表作为函数形参
15. 列表作为传参copy
created by shuaixio, 2023.12.02